정책 생성
- S3에 PutObject 허용하는 정책 생성
- 정책 이름 : S3PutObject
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::*/*"
}
]
}
사용자 생성
- testuser
- 로그인 비밀번호, 권한 없이 생성
- 사용자 ARN 확인 (arn:aws:iam:...)
역할 생성 (사용자와 정책 맵핑)
- 신뢰할 수 있는 유형의 개체 : 아무거나 선택 (나중에 편집해야 함)
- 정책 : S3PutObject
- 역할 이름 : Device-Role
- 역할 생성 후 [신뢰 관계 편집]하여 사용자 ARN 등록
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::************:user/testuser"
},
"Action": "sts:AssumeRole"
}
]
}
- 역할 ARN 확인 (arn:aws:iam:...)
임시자격증명 발행
- testuser의 access key와 secret key 입력
- 역할 ARN 입력
import boto3
aws_access_key_id = '***'
aws_secret_access_key = '***'
if __name__ == '__main__':
client = boto3.client('sts',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key)
response = client.assume_role(
RoleArn='arn:aws:iam::************:role/Device-Role',
RoleSessionName='ExampleSessionName')
tmp_access_key = response['Credentials']['AccessKeyId']
tmp_secret_key = response['Credentials']['SecretAccessKey']
print(tmp_access_key, tmp_secret_key)
실행 결과
* temp access key: ASIA4JXH***MYOWS3WA
* temp secret key: 843oWl9i***MU/Oo0IzBNK9llcTJvF4lh***u9lh