В настоящее время я обучаюсь на одном из моих курсов, в которых используется AWS EMR. Каждый раз, когда я хочу использовать EMR, я должен запускать скрипт .sh (назовем его launch.sh
), который в основном запускает шаблон облачной информации (скажем, он называется cf.json
). В launch.sh
есть переменная template_url
, которая направляет ее в файл json в s3 (cf.json
) с конечной точкой http.
У меня есть разрешение на запись и чтение в эту корзину (не удалять / прикреплять acl). И я успешно создал копию cf.json
, и я называю ее cf2.json
. Однако, когда я указываю launch.sh
на cf2.json
, я получаю ошибку «Отказано в разрешении».
Вы знаете, что вызывает это? Есть ли контроль разрешений относительно template_url
в облачной информации?
вот ошибка, которую я получаю. Я замаскировал все детали в журнале, чтобы предотвратить проблемы конфиденциальности.
An error occurred (AccessDenied) when calling the CreateStack operation: User:
arn:aws:sts::12345678:assumed-role/CrossStack-IamRole-
ABCDEFGH/i-0123456 is not authorized to perform:
cloudformation:CreateStack on resource: arn:aws:cloudformation:us-east-
1:12345678:stack/student-emr/*
Однако, когда я использую исходный URL, я получаю сообщение об успехе:
Creating EMR Cluster. This will take about 15 minutes...
{
"StackId": "arn:aws:cloudformation:us-east-1:12345678:stack/student-emr/some-hash-id"
}
это скрипт в launch.sh
aws cloudformation create-stack --region $emr_region --stack-name $stackname \
--template-url $template_url \
--parameters ParameterKey=Owner,ParameterValue=$student_id \
--role-arn $cf_role_arn
Я изменил значение $template_url
Переменная
Примечание
Оба файла .json (cf.json
& cf2.json
) не имеют public-read
ACL, и я подтвердил это, пытаясь скопировать файл с моего персонального компьютера, который возвращает 403 при попытке выполнить s3 cp
.