4

AWSでVPC制御のElastic Search Serviceを作成しようとしています。問題は次のコードを実行するとエラーが発生することです。 'ValidationException:処理を続行する前に、サービスに関連付けられた役割を有効にして、VPCにアクセスするためのAmazon ESの権限を付与する必要があります。' ValidationException:続行する前に、あなたのVPCにアクセスするためにアマゾンES権限を与えるサービスにリンクされた役割を有効にする必要がありますValidationException:続行する前に、サービスに関連付けられた役割を有効にして、Amazon ESにVPCへのアクセス権を付与する必要があります。

const AWS = require('aws-sdk'); 
AWS.config.update({region:'<aws-datacenter>'}); 
const accessPolicies = { 
    Statement: [{ 
    Effect: "Allow", 
    Principal: { 
     AWS: "*" 
    }, 
    Action: "es:*", 
    Resource: "arn:aws:es:<dc>:<accountid>:domain/<domain-name/*" 
    }] 
}; 
const params = { 
    DomainName: '<domain>', 
    /* required */ 
    AccessPolicies: JSON.stringify(accessPolicies), 
    AdvancedOptions: { 
    EBSEnabled: "true", 
    VolumeType: "io1", 
    VolumeSize: "100", 
    Iops: "1000" 
    }, 
    EBSOptions: { 
    EBSEnabled: true, 
    Iops: 1000, 
    VolumeSize: 100, 
    VolumeType: "io1" 
    }, 
    ElasticsearchClusterConfig: { 
    DedicatedMasterCount: 3, 
    DedicatedMasterEnabled: true, 
    DedicatedMasterType: "m4.large.elasticsearch", 
    InstanceCount: 2, 
    InstanceType: 'm4.xlarge.elasticsearch', 
    ZoneAwarenessEnabled: true 
    }, 
    ElasticsearchVersion: '5.5', 
    SnapshotOptions: { 
    AutomatedSnapshotStartHour: 3 
    }, 
    VPCOptions: { 
    SubnetIds: [ 
     '<redacted>', 
     '<redacted>' 
    ], 
    SecurityGroupIds: [ 
     '<redacted>' 
    ] 
    } 
}; 

const es = new AWS.ES(); 
es.createElasticsearchDomain(params, function (err, data) { 
    if (err) { 
    console.log(err, err.stack); // an error occurred 
    } else { 
    console.log(JSON.stringify(data, null, 4)); // successful response 
    } 
}); 

問題は、私はこのエラーを取得することです。私は、弾性検索サービスのためにこのサービスにリンクされた役割をどのように作成するかを考え出すことはできません。 aws.amazon.comのIAMコンソールでは、役割のためにそのサービスを選択することはできません。私はそれが自動的に作成されるはずだと信じています。

誰かがこれに遭遇したか、それを修正する方法を知っていますか?

+0

私も同じエラーを取得していますテストelasticsearchドメインを削除することができます。サービス連携リンクを[VPCOptions]に設定する方法がないようです(http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-vpcoptions.html#aws-properties- elasticsearch-domain-vpcoptions-seealso)である。 Amazon ESでは、VPCにアクセスしてドメインエンドポイントを作成し、VPCのサブネットにネットワークインターフェイスを配置するためのサービスに関連した役割が必要です。 –

答えて

9

VPCのドメインを作成し、aws-sdk/cloudformationを使用してドメインを作成することは現在サポートされていません。 elasticsearchサービスでは、指定されたVPCのネットワークインターフェイスを作成するための特別なサービスリンクロールが必要です。これは現在、consoleを使用してのみ可能です。

しかし、そこにこの作業を取得するための回避策があると以下のように説明されています

  • コンソールを使用してVPCアクセステストelasticsearchドメインを作成します。
  • これはAWSServiceRoleForAmazonElasticsearchServiceという名前のサービスリンク役割が作成されます[注:あなたは、手動またはTHR consoleによって指定された名前のロールを作成することはできません]
  • この役割が作成されたら、VPCelasticsearchドメインを作成するaws-sdkまたはcloudformationを使用しています。
  • あなたは `AWS-cloudformation`テンプレートを使用してVPCで` elasticsearch`ドメインを作成しながら、後に
+5

サービスリンクされた役割を作成するより良い方法は、CLIを使用することです: 'aws iam create-service-linked-role --aws-service-name es.amazonaws.com' –

関連する問題