1

场景:
我在 Amazon 上创建了一个应用程序,并使用Login with Amazon,它返回一个“access_token”。然后我运行:

  AWS.config.credentials = new AWS.WebIdentityCredentials({

          RoleArn: 'arn:aws:iam::416942672???:role/???_amazon_role',
          ProviderId: 'www.amazon.com',
          WebIdentityToken:"?????????"
        });

  AWS.config.region = 'us-west-2';

  dynamodb =  new  AWS.DynamoDB()   dynamodb.listTables({}, function a(error,data){

    alert( "error: " +  JSON.stringify(error) );
    alert( JSON.stringify(data) );
    });

当我稍后运行该ListTable函数时,它将返回:

error: {"message":"Missing credentials in config","code":"SigningError","name":"SigningError","statusCode":403,"retryable":false}

我发现似乎我必须打电话AssumeRoleWithWebIdentity。但是如何在AWS SDK for JavaScript中调用它?还是我错过了其他任何过程?

4

2 回答 2

1

获取临时凭证的过程确实需要调用AssumeRoleWithWebIdentity - 这个低级 API 调用隐含在更高级别的AWS SDK for JavaScript凭证提供程序调用new AWS.WebIdentityCredentials()中,请参见例如Class: AWS.WebIdentityCredentials

表示从 STS Web Identity Federation 支持检索的凭据。

默认情况下,此提供商使用 AWS.STS.assumeRoleWithWebIdentity()服务操作获取凭证。此操作需要一个 RoleArn,其中包含将为其提供凭证的应用程序的 IAM 信任策略的 ARN。此外,WebIdentityToken 必须设置为身份提供者提供的令牌。有关使用正确 RoleArn 和 WebIdentityToken 值创建凭据对象的示例,请参见constructor() 。

鉴于错误消息"Missing credentials in config",您显然传递了一个不正确的WebIdentityToken,这并不奇怪,因为您刚刚指定了一些?????????占位符;) - 因为您已经使用 Login with Amazon ,它返回一个 access_token,您只需需要传递 ACCESS_TOKEN 的内容而不是那些?????????占位符作为值,WebIdentityToken并且应该全部设置。

于 2014-01-03T15:21:44.270 回答
0

以这种方式使用 AWS 实例:

  var aws = AWS ;
  var region = aws.config.region = 'us-east-1';
  var cred = new aws.Credentials(<YOUR_ACCESS_KEY_ID>, 
            <YOUR_SECRET_ACCESS_KEY>, sessionToken = null);

要获取 ACCESS KEY ID 和 SECRET ACCESS_KEY,请访问:

AWS IAM>用户>安全凭证>访问密钥

现在使用aws实例进行进一步操作。

于 2017-09-20T18:21:02.400 回答