AWS CloudFormation
ユーザーガイド (API バージョン 2010-05-15)

AWS::Elasticsearch::Domain

AWS::Elasticsearch::Domain リソースは、Amazon ES エンジンインスタンスをカプセル化する Amazon Elasticsearch Service (Amazon ES) ドメインを作成します。詳細については、Amazon Elasticsearch Service 開発者ガイド の「CreateElasticsearchDomain」を参照してください。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

{ "Type" : "AWS::Elasticsearch::Domain", "Properties" : { "AccessPolicies" : JSON object, "AdvancedOptions" : { String:String, ... }, "DomainName" : String, "EBSOptions" : EBSOptions, "ElasticsearchClusterConfig" : ElasticsearchClusterConfig, "ElasticsearchVersion" : String, "EncryptionAtRestOptions" : EncryptionAtRestOptions, "SnapshotOptions" : SnapshotOptions, "Tags" : [ Resource Tag, ... ], "VPCOptions" : VPCOptions } }

プロパティ

AccessPolicies

Amazon ES ドメインにアクセスできるユーザーとユーザーのアクセス権限を指定する AWS Identity and Access Management (IAM) ポリシードキュメント。詳細については、Amazon Elasticsearch Service 開発者ガイド の「アクセスポリシーの設定」を参照してください。

Required: No

Type: JSON object

更新に伴う要件: 中断はありません。

AdvancedOptions

Amazon ES メインに指定する追加のオプション。詳細については、Amazon Elasticsearch Service 開発者ガイド の「詳細オプションの設定」を参照してください。

Required: No

Type: 次のような、文字列とキー値ペアで構成される JSON オブジェクト

{ "rest.action.multi.allow_explicit_index": "true" }

更新に伴う要件: 置換

DomainName

Amazon ES ドメインの名前。有効な値については、Amazon Elasticsearch Service 開発者ガイド の「DomainName」を参照してください。

名前を指定しないと、AWS CloudFormation は一意の物理 ID を生成し、その ID をドメイン名として使用します。詳細については、「Name タイプ」を参照してください。

重要

名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。

Required: No

Type: String

更新に伴う要件: 置換

EBSOptions

Amazon ES ドメインのデータノードにアタッチされる Amazon Elastic Block Store (Amazon EBS) ボリュームの設定。詳細については、Amazon Elasticsearch Service 開発者ガイド の「EBS ベースのストレージの設定」を参照してください。

Required: No

Type: EBSOptions

更新に伴う要件: 中断はありません。

ElasticsearchClusterConfig

Amazon ES ドメインのクラスター設定。インスタンスタイプやインスタンス数などのオプションを指定できます。詳細については、Amazon Elasticsearch Service 開発者ガイド の「Amazon ES ドメインの設定」を参照してください。

Required: No

Type: ElasticsearchClusterConfig

更新に伴う要件: 中断はありません。

ElasticsearchVersion

使用する Elasticsearch のバージョン。例: 2.3Amazon ES がサポートするバージョンについては、Amazon Elasticsearch Service 開発者ガイドCreateElasticsearchDomain アクションの Elasticsearch-Version パラメータを参照してください。

Required: No

Type: String

更新に伴う要件: 置換

EncryptionAtRestOptions

ドメインでデータを暗号化する必要があるかどうかを指定します。暗号化する場合は、使用する AWS Key Management Service (KMS) キーを指定します。新しいドメインの作成にのみ使用でき、既存のドメインの更新には使用できません。

必須: いいえ

タイプ: EncryptionAtRestOptions

更新に伴う要件: 置換

SnapshotOptions

Amazon ES ドメインインデックスの自動スナップショット設定。

Required: No

Type: SnapshotOptions

更新に伴う要件: 中断はありません。

Tags

Amazon ES ドメインに関連付ける任意のタグのセット (キーと値のペア)。

Required: No

Type: リソースタグ

更新に伴う要件: 中断はありません。

VPCOptions

Amazon ES ドメインの Virtual Private Cloud (VPC) 設定。詳細については、Amazon Elasticsearch Service 開発者ガイド の「Amazon Elasticsearch Service ドメインの VPC サポート」を参照してください。

必須: いいえ

タイプ: VPCOptions

更新に伴う要件: 中断はありません

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref により mystack-elasticsea-abc1d2efg3h4 のようなリソース名が返されます。

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。

DomainArn

ドメインの Amazon リソースネーム (ARN) (arn:aws:es:us-west-2:123456789012:domain/mystack-elasti-1ab2cdefghij など)。

DomainEndpoint

インデックス、検索、データアップロードのリクエストを Amazon ES ドメインに送信するために使用されるドメイン固有のエンドポイント (search-mystack-elasti-1ab2cdefghij-ab1c2deckoyb3hofw7wpqa3cm.us-west-2.es.amazonaws.com など)。

Fn::GetAtt の使用の詳細については、「Fn::GetAtt」を参照してください。

次の例では、2 つのデータノードと 3 つのマスターノードを含む Amazon ES ドメインを作成します。インデックスの自動スナップショットは午前 0 時と午前 1 時 (UTC) の間に毎日作成されます。アクセスポリシーは、IAM ユーザー es-user に、ドメインに対するすべての Amazon ES アクション (es:UpdateElasticsearchDomainConfig など) を行うことを許可します。

JSON

"ElasticsearchDomain": { "Type": "AWS::Elasticsearch::Domain", "Properties": { "DomainName": "test", "ElasticsearchClusterConfig": { "DedicatedMasterEnabled": "true", "InstanceCount": "2", "ZoneAwarenessEnabled": "true", "InstanceType": "m3.medium.elasticsearch", "DedicatedMasterType": "m3.medium.elasticsearch", "DedicatedMasterCount": "3" }, "EBSOptions": { "EBSEnabled": true, "Iops": 0, "VolumeSize": 20, "VolumeType": "gp2" }, "SnapshotOptions": { "AutomatedSnapshotStartHour": "0" }, "AccessPolicies": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/es-user" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:123456789012:domain/test/*" }] }, "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "true" } } }

YAML

ElasticsearchDomain: Type: AWS::Elasticsearch::Domain Properties: DomainName: "test" ElasticsearchClusterConfig: DedicatedMasterEnabled: "true" InstanceCount: "2" ZoneAwarenessEnabled: "true" InstanceType: "m3.medium.elasticsearch" DedicatedMasterType: "m3.medium.elasticsearch" DedicatedMasterCount: "3" EBSOptions: EBSEnabled: true Iops: 0 VolumeSize: 20 VolumeType: "gp2" SnapshotOptions: AutomatedSnapshotStartHour: "0" AccessPolicies: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: AWS: "arn:aws:iam::123456789012:user/es-user" Action: "es:*" Resource: "arn:aws:es:us-east-1:846973539254:domain/test/*" AdvancedOptions: rest.action.multi.allow_explicit_index: "true"

次の例では、VPC オプションを持つドメインを作成します。

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "ElasticsearchDomain resource", "Parameters": { "DomainName" : { "Description" : "User defined Elasticsearch Domain name", "Type" : "String" }, "ElasticsearchVersion" : { "Description" : "User defined Elasticsearch Version", "Type" : "String" }, "InstanceType" : { "Type" : "String" }, "AvailabilityZone" : { "Type" : "String" }, "CidrBlock" : { "Type" : "String" }, "GroupDescription" : { "Type" : "String" }, "SGName" : { "Type" : "String" } }, "Resources": { "ElasticsearchDomain": { "Type": "AWS::Elasticsearch::Domain", "Properties": { "DomainName": { "Ref": "DomainName" }, "ElasticsearchVersion": { "Ref": "ElasticsearchVersion" }, "ElasticsearchClusterConfig": { "InstanceCount": "1", "InstanceType": { "Ref": "InstanceType" } }, "EBSOptions": { "EBSEnabled" : "true", "Iops" : 0, "VolumeSize" : 10, "VolumeType" : "standard" }, "SnapshotOptions": { "AutomatedSnapshotStartHour": "0" }, "AccessPolicies": { "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "*" }] }, "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "true" }, "Tags": [{ "Key": "foo", "Value": "bar" }], "VPCOptions" : { "SubnetIds" : [ {"Ref" : "subnet"} ], "SecurityGroupIds" : [ {"Ref" : "mySecurityGroup"} ] } } }, "vpc" : { "Type" : "AWS::EC2::VPC", "Properties" : { "CidrBlock" : "10.0.0.0/16" } }, "subnet" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "VpcId" : {"Ref": "vpc"}, "CidrBlock" : {"Ref" : "CidrBlock"}, "AvailabilityZone" : {"Ref" : "AvailabilityZone"} } }, "mySecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": {"Ref" : "GroupDescription"}, "VpcId" : {"Ref" : "vpc"}, "GroupName": {"Ref" : "SGName"}, "SecurityGroupIngress": [ { "FromPort": "443", "IpProtocol": "tcp", "ToPort": "443", "CidrIp": "0.0.0.0/0" } ] } } }, "Outputs": { "DomainArn": { "Value": { "Fn::GetAtt": ["ElasticsearchDomain", "DomainArn"] } }, "DomainEndpoint": { "Value": { "Fn::GetAtt": ["ElasticsearchDomain", "DomainEndpoint"] } }, "SecurityGroupId": { "Value": { "Ref": "mySecurityGroup" } }, "SubnetId": { "Value": { "Ref": "subnet" } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Description: ElasticsearchDomain resource Parameters: DomainName: Description: User defined Elasticsearch Domain name Type: String ElasticsearchVersion: Description: User defined Elasticsearch Version Type: String InstanceType: Type: String AvailabilityZone: Type: String CidrBlock: Type: String GroupDescription: Type: String SGName: Type: String Resources: ElasticsearchDomain: Type: AWS::Elasticsearch::Domain Properties: DomainName: !Ref DomainName ElasticsearchVersion: !Ref ElasticsearchVersion ElasticsearchClusterConfig: InstanceCount: '1' InstanceType: !Ref InstanceType EBSOptions: EBSEnabled: 'true' Iops: 0 VolumeSize: 10 VolumeType: standard SnapshotOptions: AutomatedSnapshotStartHour: '0' AccessPolicies: Version: 2012-10-17 Statement: - Effect: Deny Principal: AWS: '*' Action: 'es:*' Resource: '*' AdvancedOptions: rest.action.multi.allow_explicit_index: 'true' Tags: - Key: foo Value: bar VPCOptions: SubnetIds: - !Ref subnet SecurityGroupIds: - !Ref mySecurityGroup vpc: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 subnet: Type: AWS::EC2::Subnet Properties: VpcId: !Ref vpc CidrBlock: !Ref CidrBlock AvailabilityZone: !Ref AvailabilityZone mySecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: !Ref GroupDescription VpcId: !Ref vpc GroupName: !Ref SGName SecurityGroupIngress: - FromPort: '443' IpProtocol: tcp ToPort: '443' CidrIp: 0.0.0.0/0 Outputs: DomainArn: Value: !GetAtt ElasticsearchDomain.DomainArn DomainEndpoint: Value: !GetAtt ElasticsearchDomain.DomainEndpoint SecurityGroupId: Value: !Ref mySecurityGroup SubnetId: Value: !Ref subnet

このページの内容: