

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menambahkan dan menyesuaikan sumber daya lingkungan Elastic Beanstalk
<a name="environment-resources"></a>

Anda mungkin ingin menyesuaikan sumber daya lingkungan Anda yang merupakan bagian dari lingkungan Elastic Beanstalk Anda. Misalnya, Anda mungkin ingin menambahkan antrean Amazon SQS dan alarm pada kedalaman antrian, atau Anda mungkin ingin menambahkan kluster Amazon. ElastiCache Anda dapat dengan mudah menyesuaikan lingkungan Anda pada saat yang sama saat Anda men-deploy versi aplikasi Anda dengan menyertakan file konfigurasi dengan paket sumber Anda.

Anda dapat menggunakan `Resources` kunci dalam [file konfigurasi](ebextensions.md) untuk membuat dan menyesuaikan AWS sumber daya di lingkungan Anda. Sumber daya yang didefinisikan dalam file konfigurasi ditambahkan ke CloudFormation template yang digunakan untuk meluncurkan lingkungan Anda. Semua [jenis CloudFormation sumber daya](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) didukung.

**catatan**  
Setiap kali Anda menambahkan sumber daya yang tidak dikelola oleh Elastic Beanstalk, pastikan untuk menambahkan kebijakan pengguna dengan izin AWS Identity and Access Management yang sesuai untuk pengguna (IAM) Anda. [Kebijakan pengguna terkelola](AWSHowTo.iam.managed-policies.md) yang disediakan Elastic Beanstalk hanya mencakup izin ke sumber daya terkelola Elastic Beanstalk.

Sebagai contoh, file konfigurasi berikut menambahkan hook siklus hidup Auto Scaling ke grup Auto Scaling default yang dibuat oleh Elastic Beanstalk:

**`~/my-app/.ebextensions/as-hook.config`**

```
Resources:
  hookrole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument: {
               "Version": "2012-10-17",		 	 	 
               "Statement": [ {
                  "Effect": "Allow",
                  "Principal": {
                     "Service": [ "autoscaling.amazonaws.com" ]
                  },
                  "Action": [ "sts:AssumeRole" ]
               } ]
            }
      Policies: [ {
               "PolicyName": "SNS",
               "PolicyDocument": {
                      "Version": "2012-10-17",		 	 	 
                      "Statement": [{
                          "Effect": "Allow",
                          "Resource": "*",
                          "Action": [
                              "sqs:SendMessage",
                              "sqs:GetQueueUrl",
                              "sns:Publish"
                          ]
                        }
                      ]
                  }
               } ]
  hooktopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        - Endpoint: "{{my-email@example.com}}"
          Protocol: email
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
      LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
      NotificationTargetARN: { "Ref" : "hooktopic" }
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
```

Contoh ini mendefinisikan tiga sumber daya, `hookrole`, `hooktopic` dan `lifecyclehook`. Dua sumber daya pertama adalah peran IAM, yang memberikan izin Amazon Auto EC2 Scaling untuk mempublikasikan pesan ke Amazon SNS, dan topik SNS, yang menyampaikan pesan dari grup Auto Scaling ke alamat email. Elastic Beanstalk membuat sumber daya ini dengan sifat dan jenis yang ditentukan.

Sumber daya akhir, `lifecyclehook`, adalah hook siklus hidup itu sendiri:

```
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
      LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
      NotificationTargetARN: { "Ref" : "hooktopic" }
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
```

Definisi hook siklus hidup menggunakan dua [fungsi](ebextensions-functions.md) untuk mengisi nilai properti hook. `{ "Ref" : "AWSEBAutoScalingGroup" }` mengambil nama grup Auto Scaling yang dibuat oleh Elastic Beanstalk untuk lingkungan. `AWSEBAutoScalingGroup` adalah salah satu [nama sumber daya](customize-containers-format-resources-eb.md) standar disediakan oleh Elastic Beanstalk.

Untuk `[AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#d0e48356)`, `Ref` hanya mengembalikan nama peran, bukan ARN. Untuk mendapatkan ARN untuk parameter `RoleARN`, Anda menggunakan fungsi intrinsik lain, `Fn::GetAtt` sebagai gantinya, yang bisa mendapatkan atribut apa pun dari sumber daya. `RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }` mendapatkan atribut `Arn` dari sumber daya `hookrole`.

`{ "Ref" : "hooktopic" }` mendapatkan ARN dari topik Amazon SNS yang dibuat sebelumnya dalam file konfigurasi. Nilai yang dikembalikan oleh `Ref` bervariasi per jenis sumber daya dan dapat ditemukan di [topik Panduan CloudFormation Pengguna untuk jenis AWS::SNS::Topic sumber daya](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#d0e62250).