boto3에 버킷 이름 목록을 전달하고 각 버킷에서 버전 관리를 활성화 한 다음 각 버킷에서 수명주기 정책을 사용하도록 설정하려고합니다.AWS : Boto3 S3 버전 관리/라이프 사이클 사용 - 액세스 거부
나는 aws configure를 수행했으며, 필요한 모든 권한을 가진 현재의 활성 사용자 프로파일과 두 개의 프로파일을 가지고있다. 내가 사용하고자하는 것은 "default"라는 이름입니다. 그 문제가되지 않습니다, 그래서 내 프로필이 모든 권한을 가지고
Traceback (most recent call last):
File "putVersioning.py", line 27, in <module>
bucketVersioning.enable()
File "/usr/local/lib/python2.7/dist-packages/boto3/resources/factory.py", line 520, in do_action
response = action(self, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/boto3/resources/action.py", line 83, in __call__
response = getattr(parent.meta.client, operation_name)(**params)
File "/home/user/.local/lib/python2.7/site-packages/botocore/client.py", line 253, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/home/user/.local/lib/python2.7/site-packages/botocore/client.py", line 557, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the PutBucketVersioning operation: Access Denied
:이 프로그램을 실행할 때
import boto3
# Create session
s3 = boto3.resource('s3')
# Bucket list
buckets = ['BUCKET-NAME']
# iterate through list of buckets
for bucket in buckets:
# Enable Versioning
bucketVersioning = s3.BucketVersioning('bucket')
bucketVersioning.enable()
# Current lifecycle configuration
lifecycleConfig = s3.BucketLifecycle(bucket)
lifecycleConfig.add_rule={
'Rules': [
{
'Status': 'Enabled',
'NoncurrentVersionTransition': {
'NoncurrentDays': 7,
'StorageClass': 'GLACIER'
},
'NoncurrentVersionExpiration': {
'NoncurrentDays': 30
}
}
]
}
# Configure Lifecycle
bucket.configure_lifecycle(lifecycleConfig)
print "Versioning and lifecycle have been enabled for buckets."
나는 다음과 같은 오류가 발생합니다. passing credentials에 대한 다른 조치가 필요합니까? 모두에게 감사드립니다!
당신이 "프로필"을 쓸 때 당신은 "역할"또는 "사용자"를 뜻이어야한다 : 그러나, 나는 또한 변수를 인용하여 내 코드에 놓 쳤어 나타 납니까? 어느 특권에 "기본"권한이 있습니까? 그것이 역할이라면, 당신이 기계에서 돌아가고 있는지 확인 했습니까? 그것이 사용자 인 경우,'AWS_ACCESS_KEY_ID'와'AWS_SECRET_ACCESS_KEY'가 유효하고 활성화되어 있는지 확인 했습니까? – l0b0
죄송합니다. 나는 명시하지 않았습니다. 내 프로필이 내 "사용자"프로필입니다. 그것은 유효하고 활동적이며, 나는 aws cli를 통해 모든 것을 할 수 있습니다. – flyingcars34
실제 코드입니까? '버킷'이라는 버킷을 사용하셨습니까? –