![](/img/trans.png)
[英]AWS Data Pipeline: Issue with permissions S3 Access for IAM role
[英]AWS Data Pipeline authorization issue
我尝试设置一个计划的活动来启动和停止ec2实例。 我的活动没有给我以下错误:
调用StartInstances操作时发生客户端错误(UnauthorizedOperation):您无权执行此操作。 编码授权失败消息:....
我的cli活动是这样的:
aws ec2 describe-instances --region us-west-2 --filter "Name=tag:auto-start,Values=yes" "Name=instance-state-name,Values=stopped" --query 'Reservations[*].Instances[*].[InstanceId]' --output text |xargs aws ec2 start-instances --region us-west-2 --instance-i
我是否需要提供访问/密钥作为附加参数? 由于我访问受限,我无法更新数据管道策略。 但是我可以使用aws cli工具启动和停止实例。
无论您使用的是Lambda还是DataPipeline,都需要了解与它们相关的IAM角色和策略。 要解决您的问题,您所要做的就是将StartInstances
特权添加到DataPipeLineDefaultResource
角色。 默认策略是只读的,没有启动实例的权限。
推荐政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*",
"ec2:Describe*",
"ec2:Start*",
"ec2:RunInstances",
"ec2:Stop*",
"datapipeline:*",
"cloudwatch:*"
],
"Resource": [
"*"
]
}
]
}
让您的IAM管理员创建一个允许其启动实例的新策略。 AWS DataPipeline文档包含所需信息。 然后将该IAM策略附加到DataPipeLineDefaultResource
角色,您的问题就解决了。 解决此问题后,您可以考虑是否使用Lambda。
我正在写一个答案,因为它转变我的建议需要一些细节。
为了安排这些事情,我建议使用lambda,因为它更具成本效益和直接性。
AWS lambda现在支持预定事件 ,然后您可以使用sdk进行cli调用(当前支持的语言是python,node.js和java)。
例如,启动实例的快速lambda函数将如下所示(未经测试):
import boto3
def lambda_handler(event, context):
ec2.create_instances(ImageId='<ami-image-id>', MinCount=1, MaxCount=5)
那么你只需要安排这个lambda函数(cron like system)。 还请注意附加正确的IAM角色/权限。 boto3文档在这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.