在本地获取aws跨帐户iam角色

时间:2018-06-13 10:10:51

标签: amazon-web-services aws-sdk amazon-iam amazon-kinesis

我是新手,面对iam角色的问题。我正在做跨账户角色。在帐户x中说,为帐户Y创建的角色授予从kinesis Streams读取的权限。

我想连接到帐户Y,使用java SDK在本地从帐户X获取流(我没有在帐户Y上启动EC2实例)。他们有什么方法可以做到这一点?

据我所知,如果我在帐户Y上的EC2实例上运行应用程序,我将能够对其进行操作,但我不想使用EC2来获取它。

    AWS doc mentions in 
    https://docs.aws.amazon.com/cli/latest/topic/config-vars.html

    # In ~/.aws/credentials:
    [development]
    aws_access_key_id=foo
    aws_secret_access_key=bar 

    # In ~/.aws/config
    [profile crossaccount]
    role_arn=arn:aws:iam:...
    source_profile=development

与此有关吗?在这里,我认为crossaccount是帐户x中创建的角色,用于访问帐户y。

Which aws api should I call to fetch the streams?  

提前致谢。

1 个答案:

答案 0 :(得分:0)

AWS中的跨账户访问具有您需要遵循的特定协议。当您在帐户X中创建了一个IAM角色,该角色已被授予帐户Y中的资源访问权限时,帐户Y还需要授予该角色执行STS:AssumeRole的权限。

一旦这部分设置完成,你应该很高兴。 详细了解here

要使用AWS SDK for Java,请为STS服务创建服务对象并执行AssumeRole调用。如果您使用正确的凭据提供此凭据,则其结果将是一对有权访问帐户Y资源的有效凭据。

阅读有关在Java here中使用Assume Role的更多信息。