ラムダは、us-west-2やus-east-1のような中国以外の地域の別のアカウントから中国語AWSアカウントのDynamoDBテーブルにアクセスできますか?他の地域の別のアカウントからDynamoDBテーブルにアクセスしますか?
例:
アカウント1、リージョン:CN-北-... DynamoDBのテーブルは、ここで
に住んでいる:私たち-東-1ラムダ関数は、地域、DynamoDBのにアカウント2にアクセスする必要があることをここに住ん
ラムダは、us-west-2やus-east-1のような中国以外の地域の別のアカウントから中国語AWSアカウントのDynamoDBテーブルにアクセスできますか?他の地域の別のアカウントからDynamoDBテーブルにアクセスしますか?
例:
アカウント1、リージョン:CN-北-... DynamoDBのテーブルは、ここで
に住んでいる:私たち-東-1ラムダ関数は、地域、DynamoDBのにアカウント2にアクセスする必要があることをここに住ん
AWSには現在の3つの独立したパーティションがあります。
aws
(一般にAWSと考えられ、AWSと呼ばれるもの)、aws-cn
(中国)、aws-us-gov
(GovCloud US)です。
3つのパーティションの間には何も接続がないように見えます.S3バケットの「グローバル」名前空間でさえ、内の各パーティションはです。
AWSの3つの完全に自律的で独立した「コピー」があるかのように動作します。このように、パーティションは相互に認識していないように見えるので、クロスアカウントのIAMアクセスは可能ではありません。
aws-cn
パーティション()のリソースにアクセスするには、中国のアカウントから取得したIAMユーザー資格情報を使用できる必要があります。 DynamoDB endpoint in cn-north-1はインターネットから直接アクセスできるので、これには障害はないはずです。 Lambda関数のロール資格情報を使用するのではなく、これらの資格情報をDynamoDBクライアントに渡す必要があります。
ある地域から別の地域にDynamoDBテーブルにアクセスすることは可能です。 SDKを使用する場合は、地域をcn-north
に更新してください。
var AWS = require('aws-sdk');
AWS.config.update({region: 'cn-north'});
var dynamodb = new AWS.DynamoDB();
dynamodb.batchGetItem(params, function (err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
別のアカウントを使用している場合は、別のロール(別のアカウントの場合はAssumeRole)を作成してLambdaに追加します。別のAccessKeyとSecretKeyでアクセスすることもできます。しかし、ロールが推奨されます。
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html
はそれがお役に立てば幸いです。
*これは素晴らしいことですが、非CNアカウントの役割を想定することはできません。 アカウント2でロールを作成する必要がある時点で、非CNアカウントを信頼できるエンティティとして指定しようとすると失敗します(「プリンシパルが無効です」)。しかし、別のCNアカウントを指定しようとすると、 (CNの分野はCN以外のアカウントでは生きていけません) CNの「万里の長城」のために他の地域間を簡単に切り替えることはできません:https: //fastretailing.github.io/blog/2015/09/29/AWS-ChinaBeijing-Region-Tips.html – Otter
その場合、役割を引き受ける代わりに、他のアカウントに実際の資格情報を提供する必要があります。おそらくIAMの役割ではなくIAMユーザーです)。おそらくCNリージョンと他のリージョンとの分離のためです。 –
各AWSサービスに使用できるパブリックAPIアドレスがあり、それぞれのアカウントにデータを送信するために独自のリクエストに署名します。
これは有望ですね。必要な資格情報を取得する方法と、Lambdaからこれらの資格情報を参照して使用する方法に関する推奨事項はありますか? 私は、安全ではないように見せかけることのないソリューションをオンラインで見つけるのが難しいです。 – Otter
通常の方法で資格情報を作成する必要がありますが、[機密情報を保存するための環境変数を使用したラムダ関数の作成](http://docs.aws.amazon.com/lambda/latest/dg/tutorial-env_console .html)に保存されています。ラムダコンテナが生成されると、それらのコードは解読され、環境にドロップされます。これにより、コードがアクセスしてDynamoDBクライアントに渡すことができます。 –
私はそれが動作すると思う!ありがとう! – Otter