1

phpのawssdkを使用して、ユーザーの一時的なクレデンシャルを作成しようとしています。私が収集できることから、それは私のsdkユーザーのためにIAMを介してstsポリシーを追加する場合であるはずです:

{
  "Statement": [
    {
      "Sid": "Stmt1349820612345",
      "Action": "sts:*",
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

次に、例に示すようにstsクラスをインスタンス化します。

  // Instantiate the class
  $token = new AmazonSTS();

// Generate a new IAM policy
  $policy = new CFPolicy($token, array(
    'Statement' => array(
      array(
        'Sid' => 'SID' . time(),
        'Action' => array(
          's3:ListBucket'
        ),
        'Effect' => 'Allow',
        'Resource' => 'arn:aws:s3:::my-bucket'
      )
    )
  ));

// Fetch the session credentials
  $response = $token->get_federation_token('my-user', array(
    'Policy' => $policy->get_json(),
    'DurationSeconds' => 3600
  ));

  $credentials = $response->body->GetFederatedTokenResult->Credentials
    ->to_array()->getArrayCopy();
  return $credentials;

通常の一時的なクレデンシャルトークンを使用すると、正常に機能します。

$token = new AmazonSTS();
$response = $token->get_session_token();

$credentials = $response->body->GetSessionTokenResult->Credentials->to_array()->getArrayCopy();

誰かがこれの実用的な例を持っていますか、または私がどこで間違っているのかを見ることができますか?

4

1 に答える 1

1

最後に、動作するs3ドキュメントでこれを見つけました

  $AccessKeyId = (string)$response->
    body->GetFederationTokenResult->Credentials->AccessKeyId;
  $SecretAccessKey = (string)$response->
    body->GetFederationTokenResult->Credentials->SecretAccessKey;
  $SessionToken = (string)$response->
    body->GetFederationTokenResult->Credentials->SessionToken;

だからこれはうまくいく

$credentials = $response->body->GetFederationTokenResult->Credentials->to_array()->getArrayCopy();
于 2012-10-10T00:03:37.987 に答える