我们需要列出处于CREATE_COMPLETE状态的所有堆栈.在我们的AWS账户中,我们有超过400个这样的堆栈.我们为此编写了以下代码:
stack_session = session.client('cloudformation')
list_stacks = stack_session.list_stacks(StackStatusFilter=['CREATE_COMPLETE'])
Run Code Online (Sandbox Code Playgroud)
但是,这仅列出前100个堆栈.我们想知道如何获得所有堆栈?我们正在使用python boto3库.
我有一个启用了 Organizations 的 AWS 账户。我想确保来自我的子帐户的某些日志转到我的 Kinesis 流的日志记录帐户中。这个想法是,将来如果我在组织中创建一个新的子帐户,日志应该转到 Kinesis。
为此,我使用aws logs put-destination命令在我的日志记录帐户中创建了一个 Kinesis 日志目标。我向其添加了目的地策略。我使用的政策是:
{
"Version": "2012-10-17",
"Statement": {
"Sid": "PutSubscriptionFilter",
"Effect": "Allow",
"Principal": {
"AWS": ["*"]
},
"Action": "logs:PutSubscriptionFilter",
"Resource": "arn:aws:logs:us-east-1:123456789012:destination:mytestLogDestination",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-abcde12345"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我用来添加目标策略的命令是:
aws logs put-destination-policy \
--destination-name mytestLogDestination \
--access-policy file://destination_policy.json
Run Code Online (Sandbox Code Playgroud)
这成功添加了目标策略。我可以通过运行以下命令确认这一点:aws logs describe-destinations --destination-name-prefix mytestLogDestination。当我尝试使用以下命令在我的一个成员帐户中创建新的订阅过滤器时,它出错了。我试过的命令是:
aws logs put-subscription-filter \
--log-group-name "/aws/lambda/GetOrgIdFunction" \
--filter-name randomsubscriptionfilter --filter-pattern "" \
--destination-arn arn:aws:logs:us-east-1:123456789012:destination:mytestLogDestination
Run Code Online (Sandbox Code Playgroud)
错误信息是:
调用 PutSubscriptionFilter 操作时发生错误 (AccessDeniedException):帐户 ID …