如何在本地服务器上配置AWS角色?

Den*_*boy 5 roles amazon-web-services on-prem

我已经创建了一个AWS角色,并附加了将对象放在S3存储桶中的策略。

我有一个使用该角色的本地Python应用程序。我的个人AWS用户有权承担角色。这是我使用的一些代码:

assumed_role_object = sts_client.assume_role(
    RoleArn="arn:aws:iam::account-id:role/test-role",
    RoleSessionName="myRoleSession"
)
Run Code Online (Sandbox Code Playgroud)

一切正常,但是现在我的问题是我必须如何在本地服务器上配置该服务器,而无需配置个人用户来担任该角色。

我正在考虑创建一个仅具有excludeRole权限的IAM用户,并使用该用户为我的应用程序承担角色。

我用 test-role-trust-policy.json

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
        "Action": "sts:AssumeRole"
    }
}
Run Code Online (Sandbox Code Playgroud)

并以此创建角色:

aws iam create-role --role-name test-role --assume-role-policy-document file://test-role-trust-policy.json
Run Code Online (Sandbox Code Playgroud)

将必要的策略附加到我的角色上(放置S3对象),然后在我的应用程序中使用该角色。

这是为本地服务器配置角色的正确方法吗?我发现创建一个用户在本地服务器上使用角色很奇怪(尽管现在限制了用户的权限)。

对于我来说,还不清楚我是否必须使用root作为主体或用户?

p0f*_*0fi 0

我不认为您为此用例创建特殊用户的方法有任何问题。它可以是没有控制台登录且仅具有承担给定角色的权限的用户。

\n\n

另一种方法是使用 lambda 来创建预签名 URL。使用这些 URL\xe2\x80\x99s,您的应用程序将能够将对象放入该存储桶中,而根本不需要 AIM 角色。该 URL 仅在您希望的时间内有效。您还可以将 URL 设计为仅允许特定的文件名和其他选项。

\n\n

如果您要在另一个 AWS 资源(例如 EC2 实例)上运行它,您也可以直接为该实例指定角色。

\n