dynamodbのPHPコード。 ListTables()API呼び出しを使用してテーブル名を表示する際に問題に直面しています。私はこのようにした。各ユーザーのdynamodbテーブル名の表示方法
ステップ1:AWS IAMでは、IAMに「user1」と「user2」という名前の2人のユーザーを作成しました。 IAMコンソールはユーザー 'user1'と 'user2'の両方の資格情報(アクセスキーと秘密キー)を作成しました。 dynamodbでは、私は2つのテーブルの書籍とユーザーを作成しました。
STEP2:user1の場合、「Books」という名前のテーブルにのみアクセスできます。私は(私は、テーブル名「ブック」のARNを述べ、リソースの下。)以下のようにポリシー文書を書か
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:DescribeTable",
"dynamodb:GetItem",
"dynamodb:ListTables",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:DescribeReservedCapacity",
"dynamodb:DescribeReservedCapacityOfferings",
"dynamodb:ListTagsOfResource"
],
"Effect": "Allow",
"Resource": "arn:aws:dynamodb:us-east-1:468737190093:table/Books",
}]
}
STEP3:user2のために、私は「ユーザー」という名前だけのテーブルへのアクセス権を与えられました。私は今、私の目標は、それぞれのユーザのテーブル名を表示することです
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:DescribeTable",
"dynamodb:GetItem",
"dynamodb:ListTables",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:DescribeReservedCapacity",
"dynamodb:DescribeReservedCapacityOfferings",
"dynamodb:ListTagsOfResource"
],
"Resource": [
"arn:aws:dynamodb:us-east-1:468737190093:table/Users"
]
}]
}
(リソースの下で、私は、テーブル名 'ユーザーの言及。)以下のようにポリシー文書を書かれました。私がuser1の資格情報のアクセスキーと秘密鍵でuser1でログインしている場合、テーブル名 'Books'だけを表示する必要があります。または私はuser2がでログインあれば(User2の資格情報を使用して:アクセスキーと秘密鍵)、私は唯一の「ユーザーを表示する必要が 私はListTables()API呼び出しを試みたが、私が望むものを達成していない
$sdk = new Aws\Sdk([
'region' => 'us-east-1',
'version' => 'latest',
'credentials' => array(
'key' => $userAccessKey,
'secret' => $userSecretKey
),
'http' => [
'verify' => 'D:\xampp\htdocs\ssl\cacert.pem'
]
]);
$dynamodb = $sdk->createDynamoDb();
$result = $dynamodb->listTables();
echo '<ul>';
foreach ($result['TableNames'] as $tableName) {
echo '<li><a href="table.php?var1='.$tableName.'">'.$tableName.'</a>
</li>';
}
echo '</ul>';
。。。私は以下の例外を受け取りました: AccessDeniedException "、"メッセージ ":"ユーザー:arn:aws:iam :: 468737190093:user/user1は実行する権限がありません:
メモ:ポリシー文書でリソースフィールドを「*」に変更した場合、すべてのテーブル名が正常に表示されています(Books、Users)。しかし、それぞれのユーザーのテーブル名のみを表示する必要があります。 user2 - >表示のみ'ユーザー')。
ListTables()でない場合、他のapi呼び出しやdynamodbでテーブル名をリストする他の方法がありますか? 誰かが私にソリューションを与えることができます.. :) ありがとうございます。