

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).

# Memodifikasi sumber daya yang dibuat Elastic Beanstalk untuk lingkungan Anda
<a name="customize-containers-format-resources-eb"></a>

Sumber daya yang dibuat Elastic Beanstalk untuk lingkungan Anda memiliki nama. Anda dapat menggunakan nama ini untuk mendapatkan informasi tentang sumber daya dengan [fungsi](ebextensions-functions.md), atau memodifikasi properti pada sumber daya untuk menyesuaikan perilaku mereka. Topik ini menjelaskan AWS sumber daya yang digunakan Elastic Beanstalk di berbagai jenis lingkungan.

**catatan**  
Topik sebelumnya [Sumber daya kustom](environment-resources.md) menyediakan beberapa kasus penggunaan dan contoh untuk menyesuaikan sumber daya lingkungan. Anda juga dapat menemukan lebih banyak contoh file konfigurasi di topik selanjutnya[Contoh sumber daya khusus](customize-environment-resources-examples.md). 

Lingkungan server web memiliki sumber daya berikut.

**Lingkungan server web**
+ `AWSEBAutoScalingGroup`([AWS::AutoScaling::AutoScalingGrup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html)) - Grup Auto Scaling yang melekat pada lingkungan Anda.
+ Salah satu dari dua sumber daya berikut.
  + `AWSEBAutoScalingLaunchConfiguration`([AWS::AutoScaling::LaunchConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html)) - Konfigurasi peluncuran yang dilampirkan ke grup Auto Scaling lingkungan Anda.
  + `AWSEBEC2LaunchTemplate`([AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)) - Template peluncuran Amazon EC2 yang digunakan oleh grup Auto Scaling lingkungan Anda.
**catatan**  
Jika lingkungan Anda menggunakan fungsionalitas yang memerlukan templat peluncuran Amazon EC2, dan kebijakan pengguna Anda tidak memiliki izin yang diperlukan, pembuatan atau pembaruan lingkungan mungkin gagal. [Gunakan [kebijakan pengguna yang dikelola **AdministratorAccess- AWSElastic Beanstalk**, atau tambahkan izin yang diperlukan ke kebijakan](AWSHowTo.iam.managed-policies.md) kustom Anda.](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)
+ `AWSEBEnvironmentName`([AWS::ElasticBeanstalk::Environment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html)) — Lingkungan Anda.
+ `AWSEBSecurityGroup`([AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)) - Grup keamanan yang dilampirkan ke grup Auto Scaling Anda.
+ `AWSEBRDSDatabase`([AWS: :RDS:: DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html)) — Instans Amazon RDS DB yang dilampirkan ke lingkungan Anda (jika ada).

Di lingkungan yang seimbang dengan beban, Anda dapat mengakses sumber daya tambahan yang terkait dengan penyeimbang beban. Classic load balancers memiliki sumber daya untuk penyeimbang beban dan satu untuk grup keamanan yang melekat padanya. Penyeimbang beban aplikasi dan jaringan memiliki sumber daya tambahan bagi listener default penyeimbang beban, aturan listener, dan grup target.

**Lingkungan yang seimbang dengan beban**
+ `AWSEBLoadBalancer`([AWS::ElasticLoadBalancing::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html)) - penyeimbang beban klasik lingkungan Anda.
+ `AWSEBV2LoadBalancer`([AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html)) — Aplikasi lingkungan Anda atau penyeimbang beban jaringan.
+ `AWSEBLoadBalancerSecurityGroup`([AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)) - Hanya dalam [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) khusus, nama grup keamanan yang dibuat Elastic Beanstalk untuk penyeimbang beban. Pada VPC default atau EC2 klasik, Elastic Load Balancing menetapkan grup keamanan default ke penyeimbang beban.
+ `AWSEBV2LoadBalancerListener`([AWS::ElasticLoadBalancingV2::Listener](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html)) - Pendengar yang memungkinkan penyeimbang beban untuk memeriksa permintaan koneksi dan meneruskannya ke satu atau beberapa grup target.
+ `AWSEBV2LoadBalancerListenerRule`([AWS::ElasticLoadBalancingV2::ListenerRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html)) — Mendefinisikan permintaan mana pendengar Elastic Load Balancing mengambil tindakan dan tindakan yang diperlukan.
+ `AWSEBV2LoadBalancerTargetGroup`([AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html)) — Grup target Elastic Load Balancing yang merutekan permintaan ke satu atau beberapa target terdaftar, seperti instans Amazon EC2.

Lingkungan pekerja memiliki sumber daya untuk antrean SQS yang menahan permintaan masuk, dan tabel Amazon DynamoDB yang digunakan oleh instans untuk pemilihan pemimpin.

**Lingkungan pekerja**
+ `AWSEBWorkerQueue`([AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)) - Antrian Amazon SQS dari mana daemon menarik permintaan yang perlu diproses.
+ `AWSEBWorkerDeadLetterQueue`([AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)) - Antrian Amazon SQS yang menyimpan pesan yang tidak dapat dikirim atau tidak berhasil diproses oleh daemon.
+ `AWSEBWorkerCronLeaderRegistry`([AWS::DynamoDB::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)) - Tabel Amazon DynamoDB yang merupakan registri internal yang digunakan oleh daemon untuk tugas berkala.

# Kunci CloudFormation template lainnya
<a name="ebextensions-otherkeys"></a>

Kami telah memperkenalkan kunci file konfigurasi dari CloudFormation seperti`Resources`,`files`, dan`packages`. Elastic Beanstalk menambahkan konten file konfigurasi CloudFormation ke template yang mendukung lingkungan Anda, sehingga Anda dapat CloudFormation menggunakan bagian lain untuk melakukan tugas-tugas lanjutan dalam file konfigurasi Anda.

**Topics**
+ [

## Parameter
](#ebextensions-otherkeys-parameters)
+ [

## Output
](#ebextensions-otherkeys-outputs)
+ [

## Pemetaan
](#ebextensions-otherkeys-mappings)

## Parameter
<a name="ebextensions-otherkeys-parameters"></a>

Parameter adalah alternatif untuk [opsi khusus](configuration-options-custom.md) Elastic Beanstalk sendiri yang dapat Anda gunakan untuk menentukan nilai yang Anda gunakan di tempat lain dalam file konfigurasi Anda. Seperti opsi khusus, Anda dapat menggunakan parameter untuk mengumpulkan nilai yang dapat dikonfigurasi pengguna di satu tempat. Tidak seperti opsi khusus, Anda tidak dapat menggunakan API Elastic Beanstalk untuk menetapkan nilai parameter, dan jumlah parameter yang dapat Anda tentukan dalam templat dibatasi oleh. CloudFormation

Salah satu alasan Anda mungkin ingin menggunakan parameter adalah untuk membuat file konfigurasi Anda berfungsi ganda sebagai CloudFormation templat. Jika Anda menggunakan parameter alih-alih opsi khusus, Anda dapat menggunakan file konfigurasi untuk membuat sumber daya yang sama CloudFormation sebagai tumpukannya sendiri. Misalnya, Anda bisa memiliki file konfigurasi yang menambahkan sistem file Amazon EFS ke lingkungan Anda untuk pengujian, dan kemudian menggunakan file yang sama untuk membuat sistem file independen yang tidak terikat ke siklus hidup lingkungan Anda untuk penggunaan produksi.

Contoh berikut menunjukkan penggunaan parameter untuk mengumpulkan nilai yang dapat dikonfigurasi pengguna di bagian atas file konfigurasi.

**Example [L oadbalancer-accesslogs-existingbucket .config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-existingbucket.config) — Parameter**  

```
Parameters:
  bucket:
    Type: String
    Description: "Name of the Amazon S3 bucket in which to store load balancer logs"
    Default: "amzn-s3-demo-bucket"
  bucketprefix:
    Type: String
    Description: "Optional prefix. Can't start or end with a /, or contain the word AWSLogs"
    Default: ""
```

## Output
<a name="ebextensions-otherkeys-outputs"></a>

Anda dapat menggunakan blok `Outputs` untuk mengekspor informasi tentang sumber daya yang dibuat ke CloudFormation. Anda kemudian dapat menggunakan `Fn::ImportValue` fungsi untuk menarik nilai ke dalam CloudFormation template di luar Elastic Beanstalk.

Contoh berikut membuat topik Amazon SNS dan mengekspor ARN ke dengan nama. CloudFormation `NotificationTopicArn`

**Example [sns-topic.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/sns-topic.config)**  

```
Resources:
  NotificationTopic:
    Type: AWS::SNS::Topic

Outputs:
  NotificationTopicArn:
    Description: Notification topic ARN
    Value: { "Ref" : "NotificationTopic" }
    Export:
      Name: NotificationTopicArn
```

Dalam file konfigurasi untuk lingkungan yang berbeda, atau CloudFormation template di luar Elastic Beanstalk, Anda dapat `Fn::ImportValue` menggunakan fungsi untuk mendapatkan ARN yang diekspor. Contoh ini memberikan nilai diekspor ke properti lingkungan bernama `TOPIC_ARN`.

**Example env.config**  

```
option_settings:
  aws:elasticbeanstalk:application:environment:
    TOPIC_ARN: '`{ "Fn::ImportValue" : "NotificationTopicArn" }`'
```

## Pemetaan
<a name="ebextensions-otherkeys-mappings"></a>

Anda dapat menggunakan pemetaan untuk menyimpan pasangan nilai kunci yang diatur oleh namespace. Pemetaan dapat membantu Anda mengatur nilai yang Anda gunakan di seluruh konfigurasi Anda, atau mengubah nilai parameter tergantung pada nilai yang lain. Misalnya, konfigurasi berikut menetapkan nilai parameter ID akun berdasarkan wilayah saat ini.

**Example [L oadbalancer-accesslogs-newbucket .config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-newbucket.config) - Pemetaan**  

```
Mappings: 
  Region2ELBAccountId: 
    us-east-1: 
      AccountId: "111122223333"
    us-west-2: 
      AccountId: "444455556666"
    us-west-1: 
      AccountId: "123456789012"
    eu-west-1: 
      AccountId: "777788889999"
...
            Principal: 
              AWS: 
                ? "Fn::FindInMap"
                : 
                  - Region2ELBAccountId
                  - 
                    Ref: "AWS::Region"
                  - AccountId
```

# Fungsi
<a name="ebextensions-functions"></a>

Anda dapat menggunakan fungsi dalam file konfigurasi Anda untuk mengisi nilai untuk properti sumber daya dengan informasi dari sumber daya lain atau dari pengaturan opsi konfigurasi Elastic Beanstalk. Elastic CloudFormation Beanstalk mendukung `Ref` fungsi `Fn::GetAtt` (,`Fn::Join`,), dan satu fungsi khusus Elastic Beanstalk,. `Fn::GetOptionSetting`

**Topics**
+ [

## Ref
](#ebextensions-functions-ref)
+ [

## Fn:: GetAtt
](#ebextensions-functions-getatt)
+ [

## Fn::Join
](#ebextensions-functions-join)
+ [

## Fn:: GetOptionSetting
](#ebextensions-functions-getoptionsetting)

## Ref
<a name="ebextensions-functions-ref"></a>

Gunakan `Ref` untuk mengambil representasi string default dari AWS sumber daya. Nilai yang dikembalikan `Ref` tergantung pada jenis sumber daya, dan kadang-kadang tergantung pada faktor lain juga. Misalnya, grup keamanan ([AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)) menampilkan nama atau ID grup keamanan, tergantung pada apakah grup keamanan berada di [Amazon Virtual Private Cloud default (Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/) VPC), EC2 klasik, atau VPC kustom.

```
{ "Ref" : "resource name" }
```

**catatan**  
Untuk detail di setiap jenis sumber daya, termasuk nilai kembali dari `Ref`, lihat [Referensi Jenis Sumber Daya AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) di *Panduan Pengguna CloudFormation *.

Dari sampel [hook siklus hidup Auto Scaling](environment-resources.md):

```
Resources:
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
```

Anda juga dapat menggunakan `Ref` untuk mengambil nilai CloudFormation parameter yang ditentukan di tempat lain dalam file yang sama atau dalam file konfigurasi yang berbeda.

## Fn:: GetAtt
<a name="ebextensions-functions-getatt"></a>

Gunakan `Fn::GetAtt` untuk mengambil nilai atribut pada AWS sumber daya.

```
{ "Fn::GetAtt" : [ "resource name", "attribute name"] }
```

Dari sampel [hook siklus hidup Auto Scaling](environment-resources.md):

```
Resources:
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
```

Lihat [Fn:: GetAtt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html) untuk informasi lebih lanjut.

## Fn::Join
<a name="ebextensions-functions-join"></a>

Gunakan `Fn::Join` untuk menggabungkan string dengan pembatas. String dapat di-hardcode atau menggunakan output dari `Fn::GetAtt` atau `Ref`.

```
{ "Fn::Join" : [ "delimiter", [ "string1", "string2" ] ] }
```

Lihat [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) untuk informasi selengkapnya.

## Fn:: GetOptionSetting
<a name="ebextensions-functions-getoptionsetting"></a>

Gunakan `Fn::GetOptionSetting` untuk mengambil nilai pengaturan [opsi konfigurasi](command-options.md) yang diterapkan ke lingkungan. 

```
"Fn::GetOptionSetting":
  Namespace: "namespace"
  OptionName: "option name"
  DefaultValue: "default value"
```

Dari contoh [penyimpanan kunci pribadi](https-storingprivatekeys.md):

```
Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["elasticbeanstalk-us-west-2-123456789012"]
          roleName: 
            "Fn::GetOptionSetting": 
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
```

# Contoh sumber daya khusus
<a name="customize-environment-resources-examples"></a>

Berikut ini adalah daftar contoh file konfigurasi yang dapat Anda gunakan untuk menyesuaikan lingkungan Elastic Beanstalk Anda:
+ [DynamoDB,, dan CloudWatch SNS](https://elasticbeanstalk.s3.amazonaws.com/extensions/DynamoDB-with-CloudWatch-Alarms.config)
+ [Elastic Load Balancing dan CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/ELB-Alarms.config)
+ [ElastiCache](https://elasticbeanstalk.s3.amazonaws.com/extensions/ElastiCache.config)
+ [RDS dan CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/RDS-Alarms.config)
+ [SQS, SNS, dan CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/SNS.config)

Subtopik halaman ini memberikan beberapa contoh tambahan untuk menambahkan dan mengonfigurasi sumber daya khusus di lingkungan Elastic Beanstalk.

**Topics**
+ [

# Contoh: ElastiCache
](customize-environment-resources-elasticache.md)
+ [

# Contoh: SQS, CloudWatch, dan SNS
](customize-environment-resources-sqs.md)
+ [

# Contoh: DynamoDB,, dan CloudWatch SNS
](customize-environment-resources-dynamodb.md)

# Contoh: ElastiCache
<a name="customize-environment-resources-elasticache"></a>

Contoh berikut menambahkan ElastiCache kluster Amazon ke platform EC2-Classic dan EC2-VPC (baik Amazon Virtual [Private Cloud (Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/) VPC) default maupun kustom. Untuk informasi lebih lanjut tentang platform ini dan bagaimana Anda dapat menentukan mana yang didukung EC2 untuk wilayah dan AWS akun Anda, lihat[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html). Kemudian lihat bagian dalam topik ini yang berlaku untuk platform Anda.
+ [Platform EC2-Classic](#customize-environment-resources-elasticache-classic)
+ [EC2-VPC (default)](#customize-environment-resources-elasticache-defaultvpc)
+ [EC2-VPC (khusus)](#customize-environment-resources-elasticache-targetedvpc)

## Platform EC2-Classic
<a name="customize-environment-resources-elasticache-classic"></a>

Contoh ini menambahkan ElastiCache klaster Amazon ke lingkungan dengan instans yang diluncurkan ke platform EC2-Classic. Semua properti yang tercantum dalam contoh ini adalah properti minimum yang diperlukan yang harus ditetapkan untuk setiap jenis sumber daya. Anda dapat mengunduh contoh di [ElastiCachecontoh](https://elasticbeanstalk.s3.amazonaws.com/extensions/ElastiCache.config). 

**catatan**  
Contoh ini menciptakan AWS sumber daya, yang mungkin dikenakan biaya untuk Anda. Untuk informasi lebih lanjut tentang AWS harga, lihat[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Beberapa layanan adalah bagian dari Tingkat Penggunaan AWS Gratis. Jika Anda adalah pelanggan baru, Anda dapat menguji layanan ini secara gratis. Lihat [https://aws.amazon.com/free/](https://aws.amazon.com/free/) untuk informasi selengkapnya.

Untuk menggunakan contoh ini, lakukan hal berikut:

1. Buat direktori `[.ebextensions](ebextensions.md)` di tingkat atas dari paket sumber Anda. 

1. Buat dua file konfigurasi dengan ekstensi `.config` dan tempatkan mereka di direktori `.ebextensions` Anda. Satu file konfigurasi menentukan sumber daya, dan file konfigurasi lainnya menentukan pilihan.

1. Terapkan aplikasi Anda ke Elastic Beanstalk.

   YAML bergantung pada indentasi yang konsisten. Cocokkan tingkat indentasi saat mengganti konten dalam file konfigurasi contoh dan pastikan bahwa editor teks Anda menggunakan spasi, bukan karakter tab, untuk indentasi.

Buat file konfigurasi (misalnya, `elasticache.config`) yang ditentukan sumber daya. Dalam contoh ini, kita membuat ElastiCache cluster dengan menentukan nama sumber daya ElastiCache cluster (`MyElastiCache`), mendeklarasikan jenisnya, dan kemudian mengkonfigurasi properti untuk cluster. Contoh referensi nama sumber daya grup ElastiCache keamanan yang akan dibuat dan didefinisikan dalam file konfigurasi ini. Selanjutnya, kami membuat grup ElastiCache keamanan. Kami menentukan nama untuk sumber daya ini, menyatakan jenisnya, dan menambahkan deskripsi untuk grup keamanan. Akhirnya, kami menetapkan aturan ingress untuk grup ElastiCache keamanan untuk mengizinkan akses hanya dari instance di dalam grup keamanan (`MyCacheSecurityGroup`) dan grup ElastiCache keamanan Elastic Beanstalk (). `AWSEBSecurityGroup` Nama parameter, `AWSEBSecurityGroup`, adalah nama sumber daya tetap yang disediakan oleh Elastic Beanstalk. Anda `AWSEBSecurityGroup` harus menambahkan aturan masuk grup ElastiCache keamanan Anda agar aplikasi Elastic Beanstalk Anda terhubung ke instance di cluster Anda. ElastiCache 

```
#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.
          
Resources:
  MyElastiCache:
    Type: AWS::ElastiCache::CacheCluster
    Properties:
      CacheNodeType: 
         Fn::GetOptionSetting:
             OptionName : CacheNodeType
             DefaultValue: cache.m1.small
      NumCacheNodes: 
           Fn::GetOptionSetting:
             OptionName : NumCacheNodes
             DefaultValue: 1
      Engine: 
           Fn::GetOptionSetting:
             OptionName : Engine
             DefaultValue: memcached
      CacheSecurityGroupNames:
        - Ref: MyCacheSecurityGroup
  MyCacheSecurityGroup:
    Type: AWS::ElastiCache::SecurityGroup
    Properties:
      Description: "Lock cache down to webserver access only"
  MyCacheSecurityGroupIngress:
    Type: AWS::ElastiCache::SecurityGroupIngress
    Properties:
      CacheSecurityGroupName: 
        Ref: MyCacheSecurityGroup
      EC2SecurityGroupName:
        Ref: AWSEBSecurityGroup
```

Untuk informasi selengkapnya tentang sumber daya yang digunakan dalam contoh file konfigurasi ini, lihat referensi berikut ini: 
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::ElastiCache::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group.html)
+ [AWS::ElastiCache: SecurityGroupIngress](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html)

Buat file konfigurasi terpisah yang disebut `options.config` dan tentukan pengaturan opsi khusus. 

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     CacheNodeType : cache.m1.small
     NumCacheNodes : 1
     Engine : memcached
```

Baris-baris ini memberi tahu Elastic Beanstalk untuk mendapatkan nilai **CacheNodeTypeuntuk NumCacheNodes properti,, dan Engine **CacheNodeTypedari NumCacheNodes**,,** dan nilai Engine dalam file konfigurasi (options.config dalam contoh kita) yang berisi bagian option\$1settings **dengan** bagian aws:elasticbeanstalk:customoption yang berisi pasangan nama-nilai yang berisi nilai aktual yang akan digunakan. Pada contoh di atas, ini berarti cache.m1.small, 1, dan memcached akan digunakan untuk nilainya. Untuk informasi selengkapnya tentang `Fn::GetOptionSetting`, lihat [Fungsi](ebextensions-functions.md).

## EC2-VPC (default)
<a name="customize-environment-resources-elasticache-defaultvpc"></a>

Contoh ini menambahkan ElastiCache klaster Amazon ke lingkungan dengan instans yang diluncurkan ke platform EC2-VPC. Secara khusus, informasi pada bagian ini berlaku untuk skenario di mana EC2 meluncurkan instans ke VPC default. Semua properti pada contoh ini adalah properti minimum yang diperlukan yang harus ditetapkan untuk setiap jenis sumber daya. Untuk informasi selengkapnya tentang default VPCs, lihat [VPC dan Subnet Default Anda](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html).

**catatan**  
Contoh ini menciptakan AWS sumber daya, yang mungkin dikenakan biaya untuk Anda. Untuk informasi lebih lanjut tentang AWS harga, lihat[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Beberapa layanan adalah bagian dari Tingkat Penggunaan AWS Gratis. Jika Anda adalah pelanggan baru, Anda dapat menguji layanan ini secara gratis. Lihat [https://aws.amazon.com/free/](https://aws.amazon.com/free/) untuk informasi selengkapnya.

Untuk menggunakan contoh ini, lakukan hal berikut:

1. Buat direktori `[.ebextensions](ebextensions.md)` di tingkat atas dari paket sumber Anda. 

1. Buat dua file konfigurasi dengan ekstensi `.config` dan tempatkan mereka di direktori `.ebextensions` Anda. Satu file konfigurasi menentukan sumber daya, dan file konfigurasi lainnya menentukan pilihan.

1. Terapkan aplikasi Anda ke Elastic Beanstalk.

   YAML bergantung pada indentasi yang konsisten. Cocokkan tingkat indentasi saat mengganti konten dalam file konfigurasi contoh dan pastikan bahwa editor teks Anda menggunakan spasi, bukan karakter tab, untuk indentasi.

Sekarang beri nama file konfigurasi sumber daya `elasticache.config`. Untuk membuat ElastiCache cluster, contoh ini menentukan nama sumber daya ElastiCache cluster (`MyElastiCache`), mendeklarasikan jenisnya, dan kemudian mengkonfigurasi properti untuk cluster. Contoh ini merujuk ID sumber daya grup keamanan yang kami buat dan tentukan dalam file konfigurasi ini.

Selanjutnya, kami membuat grup keamanan EC2. Kami menentukan nama untuk sumber daya ini, menyatakan jenisnya, menambahkan deskripsi, dan menetapkan aturan masuk ke grup keamanan untuk mengizinkan akses hanya dari instans di dalam grup keamanan Elastic Beanstalk (`AWSEBSecurityGroup`). (Nama parameter,`AWSEBSecurityGroup`, adalah nama sumber daya tetap yang disediakan oleh Elastic Beanstalk. Anda `AWSEBSecurityGroup` harus menambahkan aturan masuknya grup ElastiCache keamanan agar aplikasi Elastic Beanstalk Anda terhubung ke instance di cluster Anda.) ElastiCache 

Aturan masuk untuk grup keamanan EC2 juga menentukan protokol IP dan nomor port di mana simpul cache dapat menerima koneksi. Untuk Redis, nomor port default-nya adalah `6379`.

```
#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.

Resources:
  MyCacheSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "Lock cache down to webserver access only"
      SecurityGroupIngress :
        - IpProtocol : "tcp"
          FromPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          ToPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          SourceSecurityGroupName:
            Ref: "AWSEBSecurityGroup"
  MyElastiCache:
    Type: "AWS::ElastiCache::CacheCluster"
    Properties:
      CacheNodeType:
        Fn::GetOptionSetting:
          OptionName : "CacheNodeType"
          DefaultValue : "cache.t2.micro"
      NumCacheNodes:
        Fn::GetOptionSetting:
          OptionName : "NumCacheNodes"
          DefaultValue : "1"
      Engine:
        Fn::GetOptionSetting:
          OptionName : "Engine"
          DefaultValue : "redis"
      VpcSecurityGroupIds:
        -
          Fn::GetAtt:
            - MyCacheSecurityGroup
            - GroupId

Outputs:
  ElastiCache:
    Description : "ID of ElastiCache Cache Cluster with Redis Engine"
    Value :
      Ref : "MyElastiCache"
```

Untuk informasi selengkapnya tentang sumber daya yang digunakan dalam contoh file konfigurasi ini, lihat referensi berikut ini: 
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)

Selanjutnya, beri nama file konfigurasi opsi `options.config` dan tentukan pengaturan opsi khusus. 

```
option_settings:
  "aws:elasticbeanstalk:customoption":
    CacheNodeType : cache.t2.micro
    NumCacheNodes : 1
    Engine : redis
    CachePort : 6379
```

Garis-garis ini memerintahkan Elastic Beanstalk untuk mendapatkan nilai untuk properti `CacheNodeType`, `NumCacheNodes`, `Engine`, dan `CachePort` dari nilai `CacheNodeType`, `NumCacheNodes`, `Engine`, dan `CachePort` pada file konfigurasi (`options.config` dalam contoh kami). File tersebut mencakup bagian `aws:elasticbeanstalk:customoption` (di bawah `option_settings`) yang berisi pasangan nilai-nama dengan nilai sebenarnya yang akan digunakan. Pada contoh sebelumnya, `cache.t2.micro`, `1`, `redis`, dan `6379` akan digunakan untuk nilai tersebut. Untuk informasi selengkapnya tentang `Fn::GetOptionSetting`, lihat [Fungsi](ebextensions-functions.md).

## EC2-VPC (khusus)
<a name="customize-environment-resources-elasticache-targetedvpc"></a>

Jika Anda membuat VPC kustom di platform EC2-VPC dan menentukannya sebagai VPC tempat EC2 meluncurkan instans, proses menambahkan ElastiCache cluster Amazon ke lingkungan Anda berbeda dari VPC default. Perbedaan utamanya adalah Anda harus membuat grup subnet untuk ElastiCache cluster. Semua properti pada contoh ini adalah properti minimum yang diperlukan yang harus ditetapkan untuk setiap jenis sumber daya.

**catatan**  
Contoh ini menciptakan AWS sumber daya, yang mungkin dikenakan biaya untuk Anda. Untuk informasi lebih lanjut tentang AWS harga, lihat[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Beberapa layanan adalah bagian dari Tingkat Penggunaan AWS Gratis. Jika Anda adalah pelanggan baru, Anda dapat menguji layanan ini secara gratis. Lihat [https://aws.amazon.com/free/](https://aws.amazon.com/free/) untuk informasi selengkapnya.

Untuk menggunakan contoh ini, lakukan hal berikut:

1. Buat direktori `[.ebextensions](ebextensions.md)` di tingkat atas dari paket sumber Anda. 

1. Buat dua file konfigurasi dengan ekstensi `.config` dan tempatkan mereka di direktori `.ebextensions` Anda. Satu file konfigurasi menentukan sumber daya, dan file konfigurasi lainnya menentukan pilihan.

1. Terapkan aplikasi Anda ke Elastic Beanstalk.

   YAML bergantung pada indentasi yang konsisten. Cocokkan tingkat indentasi saat mengganti konten dalam file konfigurasi contoh dan pastikan bahwa editor teks Anda menggunakan spasi, bukan karakter tab, untuk indentasi.

Sekarang beri nama file konfigurasi sumber daya `elasticache.config`. Untuk membuat ElastiCache cluster, contoh ini menentukan nama sumber daya ElastiCache cluster (`MyElastiCache`), mendeklarasikan jenisnya, dan kemudian mengkonfigurasi properti untuk cluster. Properti dalam contoh referensi nama grup subnet untuk ElastiCache cluster serta ID sumber daya grup keamanan yang kita buat dan tentukan dalam file konfigurasi ini.

Selanjutnya, kami membuat grup keamanan EC2. Kami menentukan nama untuk sumber daya ini, menyatakan jenisnya, menambahkan deskripsi, ID VPC, dan menetapkan aturan masuk grup keamanan untuk mengizinkan akses hanya dari insyans di dalam grup keamanan Elastic Beanstalk (`AWSEBSecurityGroup`). (Nama parameter,`AWSEBSecurityGroup`, adalah nama sumber daya tetap yang disediakan oleh Elastic Beanstalk. Anda `AWSEBSecurityGroup` harus menambahkan aturan masuknya grup ElastiCache keamanan agar aplikasi Elastic Beanstalk Anda terhubung ke instance di cluster Anda.) ElastiCache 

Aturan masuk untuk grup keamanan EC2 juga menentukan protokol IP dan nomor port di mana simpul cache dapat menerima koneksi. Untuk Redis, nomor port default-nya adalah `6379`. Akhirnya, contoh ini membuat grup subnet untuk ElastiCache cluster. Kami menentukan nama untuk sumber daya ini, menyatakan jenisnya, dan menambahkan deskripsi dan ID subnet pada grup subnet.

**catatan**  
Kami menyarankan Anda menggunakan subnet pribadi untuk ElastiCache cluster. Untuk informasi lebih lanjut tentang VPC dengan subnet pribadi, lihat [https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html).

```
#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.

Resources:
  MyElastiCache:
    Type: "AWS::ElastiCache::CacheCluster"
    Properties:
      CacheNodeType:
        Fn::GetOptionSetting:
          OptionName : "CacheNodeType"
          DefaultValue : "cache.t2.micro"
      NumCacheNodes:
        Fn::GetOptionSetting:
          OptionName : "NumCacheNodes"
          DefaultValue : "1"
      Engine:
        Fn::GetOptionSetting:
          OptionName : "Engine"
          DefaultValue : "redis"
      CacheSubnetGroupName:
        Ref: "MyCacheSubnets"
      VpcSecurityGroupIds:
        - Ref: "MyCacheSecurityGroup"
  MyCacheSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "Lock cache down to webserver access only"
      VpcId:
        Fn::GetOptionSetting:
          OptionName : "VpcId"
      SecurityGroupIngress :
        - IpProtocol : "tcp"
          FromPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          ToPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          SourceSecurityGroupId:
            Ref: "AWSEBSecurityGroup"
  MyCacheSubnets:
    Type: "AWS::ElastiCache::SubnetGroup"
    Properties:
      Description: "Subnets for ElastiCache"
      SubnetIds:
        Fn::GetOptionSetting:
          OptionName : "CacheSubnets"
Outputs:
  ElastiCache:
    Description : "ID of ElastiCache Cache Cluster with Redis Engine"
    Value :
      Ref : "MyElastiCache"
```

Untuk informasi selengkapnya tentang sumber daya yang digunakan dalam contoh file konfigurasi ini, lihat referensi berikut ini: 
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
+ [AWS::ElastiCache::SubnetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html)

Selanjutnya, beri nama file konfigurasi opsi `options.config` dan tentukan pengaturan opsi khusus.

**catatan**  
Pada contoh berikut, ganti contoh `CacheSubnets` dan nilai `VpcId` dengan subnet dan VPC Anda sendiri.

```
option_settings:
  "aws:elasticbeanstalk:customoption":
    CacheNodeType : cache.t2.micro
    NumCacheNodes : 1
    Engine : redis
    CachePort : 6379
    CacheSubnets:
      - subnet-1a1a1a1a
      - subnet-2b2b2b2b
      - subnet-3c3c3c3c
    VpcId: vpc-4d4d4d4d
```

Garis-garis ini memerintahkan Elastic Beanstalk untuk mendapatkan nilai untuk properti `CacheNodeType`, `NumCacheNodes`, `Engine`, `CachePort`, `CacheSubnets`, dan `VpcId` dari nilai `CacheNodeType`, `NumCacheNodes`, `Engine`, `CachePort`, `CacheSubnets`, dan `VpcId` dalam file konfigurasi (`options.config` di contoh kami). File tersebut mencakup bagian `aws:elasticbeanstalk:customoption` (di bawah `option_settings`) yang berisi pasangan nilai-nama dengan nilai sampel. Pada contoh di atas, `cache.t2.micro`, `1`, `redis`, `6379`, `subnet-1a1a1a1a`, `subnet-2b2b2b2b`, `subnet-3c3c3c3c`, dan `vpc-4d4d4d4d` akan digunakan untuk nilai. Untuk informasi selengkapnya tentang `Fn::GetOptionSetting`, lihat [Fungsi](ebextensions-functions.md).

# Contoh: SQS, CloudWatch, dan SNS
<a name="customize-environment-resources-sqs"></a>

Contoh ini menambahkan antrean Amazon SQS dan alarm pada kedalaman antrean lingkungan. Properti yang Anda lihat dalam contoh ini adalah properti minimum diperlukan yang harus Anda tetapkan untuk masing-masing sumber daya ini. Anda dapat mengunduh contoh di [SQS, SNS,](https://elasticbeanstalk.s3.amazonaws.com/extensions/SNS.config) dan. CloudWatch 

**catatan**  
Contoh ini menciptakan AWS sumber daya, yang mungkin dikenakan biaya untuk Anda. Untuk informasi lebih lanjut tentang AWS harga, lihat[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Beberapa layanan adalah bagian dari Tingkat Penggunaan AWS Gratis. Jika Anda adalah pelanggan baru, Anda dapat menguji layanan ini secara gratis. Lihat [https://aws.amazon.com/free/](https://aws.amazon.com/free/) untuk informasi selengkapnya.

Untuk menggunakan contoh ini, lakukan hal berikut:

1. Buat direktori `[.ebextensions](ebextensions.md)` di tingkat atas dari paket sumber Anda. 

1. Buat dua file konfigurasi dengan ekstensi `.config` dan tempatkan mereka di direktori `.ebextensions` Anda. Satu file konfigurasi menentukan sumber daya, dan file konfigurasi lainnya menentukan pilihan.

1. Terapkan aplikasi Anda ke Elastic Beanstalk.

   YAML bergantung pada indentasi yang konsisten. Cocokkan tingkat indentasi saat mengganti konten dalam file konfigurasi contoh dan pastikan bahwa editor teks Anda menggunakan spasi, bukan karakter tab, untuk indentasi.

Buat file konfigurasi (misalnya, sqs.config) yang mendefinisikan sumber daya. Pada contoh ini, kami membuat antrean SQS dan menentukan properti `VisbilityTimeout` di sumber daya `MySQSQueue`. Selanjutnya, kami membuat SNS `Topic` dan menetapkan bahwa email akan dikirim ke `someone@example.com` saat alarm diaktifkan. Akhirnya, kami membuat CloudWatch alarm jika antrian tumbuh melampaui 10 pesan. Di properti `Dimensions` tersebut, kami menentukan nama dimensi dan nilai yang mewakili pengukuran dimensi. Kami menggunakan `Fn::GetAtt` untuk mengembalikan nilai `QueueName` dari `MySQSQueue`.

```
#This sample requires you to create a separate configuration file to define the custom options for the SNS topic and SQS queue.
Resources:
  MySQSQueue:
    Type: AWS::SQS::Queue
    Properties: 
      VisibilityTimeout:
        Fn::GetOptionSetting:
          OptionName: VisibilityTimeout
          DefaultValue: 30
  AlarmTopic:
    Type: AWS::SNS::Topic
    Properties: 
      Subscription:
        - Endpoint:
            Fn::GetOptionSetting:
              OptionName: AlarmEmail
              DefaultValue: "nobody@amazon.com"
          Protocol: email
  QueueDepthAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: "Alarm if queue depth grows beyond 10 messages"
      Namespace: "AWS/SQS"
      MetricName: ApproximateNumberOfMessagesVisible
      Dimensions:
        - Name: QueueName
          Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"] }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 1
      Threshold: 10
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: AlarmTopic
      InsufficientDataActions:
        - Ref: AlarmTopic

Outputs :
  QueueURL: 
    Description : "URL of newly created SQS Queue"
    Value : { Ref : "MySQSQueue" }
  QueueARN :
    Description : "ARN of newly created SQS Queue"
    Value : { "Fn::GetAtt" : [ "MySQSQueue", "Arn"]}
  QueueName :
    Description : "Name newly created SQS Queue"
    Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"]}
```

Untuk informasi selengkapnya tentang sumber daya yang digunakan dalam contoh file konfigurasi ini, lihat referensi berikut ini: 
+ [AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)
+ [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)
+ [AWS::CloudWatch::Alarm](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html)

Buat file konfigurasi terpisah yang disebut `options.config` dan tentukan pengaturan opsi khusus.

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     VisibilityTimeout : 30
     AlarmEmail : "nobody@example.com"
```

Baris ini memberi tahu Elastic Beanstalk untuk mendapatkan nilai untuk properti dan Subscription Endpoint **VisibilityTimeout dari** nilai **VisibilityTimeout dan** Subscription Endpoint dalam file konfigurasi (options.config dalam contoh kita) yang berisi bagian option\$1settings **dengan** bagian aws:elasticbeanstalk:customoption yang berisi pasangan nama-nilai yang berisi nilai aktual yang akan digunakan. Pada contoh di atas, ini berarti 30 dan "nobody@amazon.com" akan digunakan untuk nilai tersebut. Untuk informasi selengkapnya tentang `Fn::GetOptionSetting`, lihat [Fungsi](ebextensions-functions.md).

# Contoh: DynamoDB,, dan CloudWatch SNS
<a name="customize-environment-resources-dynamodb"></a>

File konfigurasi ini mengatur tabel DynamoDB sebagai pengendali sesi untuk aplikasi berbasis PHP menggunakan SDK for PHP 2. AWS Untuk menggunakan contoh ini, Anda harus memiliki profil instans IAM, yang ditambahkan ke instans di lingkungan Anda dan digunakan untuk mengakses tabel DynamoDB.

 Anda dapat men-download sampel yang akan kita gunakan dalam langkah ini di [DynamoDB session Support](https://elasticbeanstalk.s3.amazonaws.com/extensions/PHP-DynamoDB-Session-Support.zip) contoh. Sampel berisi file berikut:
+ Contoh aplikasi, `index.php`
+ File konfigurasi,`dynamodb.config`, untuk membuat dan mengkonfigurasi tabel DynamoDB dan sumber daya AWS lainnya dan menginstal perangkat lunak pada instans EC2 yang meng-host aplikasi di lingkungan Elastic Beanstalk
+ File konfigurasi, `options.config`, yang menimpa file default di `dynamodb.config` dengan pengaturan khusus untuk pemasangan khusus ini

**`index.php`**

```
<?php

// Include the SDK using the Composer autoloader
require '../vendor/autoload.php';

use Aws\DynamoDb\DynamoDbClient;

// Grab the session table name and region from the configuration file
list($tableName, $region) = file(__DIR__ . '/../sessiontable');
$tableName = rtrim($tableName);
$region = rtrim($region);

// Create a DynamoDB client and register the table as the session handler
$dynamodb = DynamoDbClient::factory(array('region' => $region));
$handler = $dynamodb->registerSessionHandler(array('table_name' => $tableName, 'hash_key' => 'username'));

// Grab the instance ID so we can display the EC2 instance that services the request
$instanceId = file_get_contents("http://169.254.169.254/latest/meta-data/instance-id");
?>
<h1>Elastic Beanstalk PHP Sessions Sample</h1>
<p>This sample application shows the integration of the Elastic Beanstalk PHP
container and the session support for DynamoDB from the AWS SDK for PHP 2.
Using DynamoDB session support, the application can be scaled out across
multiple web servers. For more details, see the
<a href="https://aws.amazon.com/php/">PHP Developer Center</a>.</p>

<form id="SimpleForm" name="SimpleForm" method="post" action="index.php">
<?php
echo 'Request serviced from instance ' . $instanceId . '<br/>';
echo '<br/>';

if (isset($_POST['continue'])) {
  session_start();
  $_SESSION['visits'] = $_SESSION['visits'] + 1;
  echo 'Welcome back ' . $_SESSION['username'] . '<br/>';
  echo 'This is visit number ' . $_SESSION['visits'] . '<br/>';
  session_write_close();
  echo '<br/>';
  echo '<input type="Submit" value="Refresh" name="continue" id="continue"/>';
  echo '<input type="Submit" value="Delete Session" name="killsession" id="killsession"/>';
} elseif (isset($_POST['killsession'])) {
  session_start();
  echo 'Goodbye ' . $_SESSION['username'] . '<br/>';
  session_destroy();
  echo 'Username: <input type="text" name="username" id="username" size="30"/><br/>';
  echo '<br/>';
  echo '<input type="Submit" value="New Session" name="newsession" id="newsession"/>';
} elseif (isset($_POST['newsession'])) {
  session_start();
  $_SESSION['username'] = $_POST['username'];
  $_SESSION['visits'] = 1;
  echo 'Welcome to a new session ' . $_SESSION['username'] . '<br/>';
  session_write_close();
  echo '<br/>';
  echo '<input type="Submit" value="Refresh" name="continue" id="continue"/>';
  echo '<input type="Submit" value="Delete Session" name="killsession" id="killsession"/>';
} else {
  echo 'To get started, enter a username.<br/>';
  echo '<br/>';
  echo 'Username: <input type="text" name="username" id="username" size="30"/><br/>';
  echo '<input type="Submit" value="New Session" name="newsession" id="newsession"/>';
}
?>
</form>
```

**`.ebextensions/dynamodb.config`**

```
Resources:
  SessionTable:
    Type: AWS::DynamoDB::Table
    Properties:
      KeySchema: 
        HashKeyElement:
          AttributeName:
            Fn::GetOptionSetting:
              OptionName : SessionHashKeyName
              DefaultValue: "username"
          AttributeType:
            Fn::GetOptionSetting:
              OptionName : SessionHashKeyType
              DefaultValue: "S"
      ProvisionedThroughput:
        ReadCapacityUnits:
          Fn::GetOptionSetting:
            OptionName : SessionReadCapacityUnits
            DefaultValue: 1
        WriteCapacityUnits:
          Fn::GetOptionSetting:
            OptionName : SessionWriteCapacityUnits
            DefaultValue: 1

  SessionWriteCapacityUnitsLimit:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, " write capacity limit on the session table." ]]}
      Namespace: "AWS/DynamoDB"
      MetricName: ConsumedWriteCapacityUnits
      Dimensions:
        - Name: TableName
          Value: { "Ref" : "SessionTable" }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 12
      Threshold:
          Fn::GetOptionSetting:
            OptionName : SessionWriteCapacityUnitsAlarmThreshold
            DefaultValue: 240
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: SessionAlarmTopic
      InsufficientDataActions:
        - Ref: SessionAlarmTopic

  SessionReadCapacityUnitsLimit:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, " read capacity limit on the session table." ]]}
      Namespace: "AWS/DynamoDB"
      MetricName: ConsumedReadCapacityUnits
      Dimensions:
        - Name: TableName
          Value: { "Ref" : "SessionTable" }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 12
      Threshold:
          Fn::GetOptionSetting:
            OptionName : SessionReadCapacityUnitsAlarmThreshold
            DefaultValue: 240
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: SessionAlarmTopic
      InsufficientDataActions:
        - Ref: SessionAlarmTopic

  SessionThrottledRequestsAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": requests are being throttled." ]]}
      Namespace: AWS/DynamoDB
      MetricName: ThrottledRequests
      Dimensions:
        - Name: TableName
          Value: { "Ref" : "SessionTable" }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 1
      Threshold: 
        Fn::GetOptionSetting:
          OptionName: SessionThrottledRequestsThreshold
          DefaultValue: 1
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: SessionAlarmTopic
      InsufficientDataActions:
        - Ref: SessionAlarmTopic

  SessionAlarmTopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        - Endpoint:
            Fn::GetOptionSetting:
              OptionName: SessionAlarmEmail
              DefaultValue: "nobody@amazon.com"
          Protocol: email

files:
  "/var/app/sessiontable":
    mode: "000444"
    content: |
      `{"Ref" : "SessionTable"}`
      `{"Ref" : "AWS::Region"}`

  "/var/app/composer.json":
    mode: "000744"
    content:
      {
        "require": {
           "aws/aws-sdk-php": "*"
        }
      }

container_commands:
 "1-install-composer":
   command: "cd /var/app; curl -s http://getcomposer.org/installer | php"
 "2-install-dependencies":
   command: "cd /var/app; php composer.phar install"
 "3-cleanup-composer":
   command: "rm -Rf /var/app/composer.*"
```

Dalam file konfigurasi sampel, pertama kami membuat tabel DynamoDB dan mengonfigurasi struktur kunci utama untuk tabel dan unit kapasitas untuk mengalokasikan sumber daya yang cukup untuk menyediakan throughput yang diminta. Selanjutnya, kami membuat CloudWatch alarm untuk `WriteCapacity` dan`ReadCapacity`. Kami membuat topik SNS yang mengirim email ke "nobody@amazon.com" jika ambang alarm dilanggar. 

Setelah kita membuat dan mengkonfigurasi AWS sumber daya kita untuk lingkungan kita, kita perlu menyesuaikan instans EC2. Kami menggunakan `files` kunci untuk meneruskan rincian tabel DynamoDB ke instance EC2 di lingkungan kami serta menambahkan “require” dalam file untuk SDK for `composer.json` PHP 2. AWS Terakhir, kami menjalankan perintah kontainer untuk menginstal komposer, dependensi yang diperlukan, dan kemudian menghapus penginstal.

**`.ebextensions/options.config`**

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     SessionHashKeyName                      : username
     SessionHashKeyType                      : S
     SessionReadCapacityUnits                : 1
     SessionReadCapacityUnitsAlarmThreshold  : 240
     SessionWriteCapacityUnits               : 1 
     SessionWriteCapacityUnitsAlarmThreshold : 240
     SessionThrottledRequestsThreshold       : 1
     SessionAlarmEmail                       : me@example.com
```

Ganti SessionAlarmEmail nilainya dengan email tempat Anda ingin pemberitahuan alarm dikirim. File `options.config` tersebut berisi nilai-nilai yang digunakan untuk beberapa variabel yang ditentukan dalam `dynamodb.config`. Misalnya, `dynamodb.config` berisi baris berikut:

```
Subscription:
  - Endpoint:
      Fn::GetOptionSetting:
        OptionName: SessionAlarmEmail
        DefaultValue: "nobody@amazon.com"
```

**Baris-baris ini yang memberi tahu Elastic Beanstalk untuk mendapatkan nilai untuk properti Endpoint **SessionAlarmEmail**dari nilai dalam `options.config` file konfigurasi (dalam aplikasi contoh kami) yang berisi bagian option\$1settings **dengan** bagian aws:elasticbeanstalk:customoption yang berisi pasangan nama-nilai yang berisi nilai aktual yang akan digunakan.** Dalam contoh di atas, ini berarti **SessionAlarmEmail**akan diberi nilai`nobody@amazon.com`.

Untuk informasi selengkapnya tentang CloudFormation sumber daya yang digunakan dalam contoh ini, lihat referensi berikut:
+ [AWS::DynamoDB::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)
+ [AWS::CloudWatch::Alarm](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html)
+ [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)