我有一个要限制访问的 API Gateway api 设置。我在 AWS Route 53 中有一个子域设置,它指向我的应用程序所在的 CloudFront 分配。此应用程序向 API 发出 POST 请求。
我已经考虑过基于示例“AWS API 白名单”为我的 api 添加资源策略,但我似乎无法获得正确的语法,我经常遇到错误。
我还尝试创建一个 IAM 用户并使用 AWS_IAM auth 锁定 API,但随后我需要创建一个签名请求,这似乎有很多工作,通过资源策略应该会容易得多?
这是我尝试附加到 API 的资源策略示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{CloudFrontID}}"
},
"Action": "execute-api:Invoke",
"Resource": [
"execute-api:/*/*/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这将返回以下错误:
Invalid policy document. Please check the policy syntax and ensure that Principals are valid.
amazon-web-services amazon-iam aws-api-gateway aws-resource-group
我正在使用 AWS ResourceGroupTagginApi(get-resources 命令,https://docs.aws.amazon.com/cli/latest/reference/resourcegroupstaggingapi/get-resources.html)列出我的账户中的所有资源并检查是否标签已按照我的意愿设置。
不,我注意到 get-resources 命令还返回我已经删除的资源。
ResourceGroupTagginApi 对我来说的优点是,我可以使用一个命令获取所有资源和标签,并且不必调用特定于服务的 api(我必须为每个服务单独实现)。
如何只返回未删除的资源?或者如何在不使用服务特定 API 的情况下过滤掉已删除的资源?
我们正在标记我们的 AWS 实例,我想通过 TAG 引用检索我们所有实例(ELB、S3、EC2、安全组)的列表。例如,我们始终使用以下内容标记我们的资源:{ "Key": "Project", "Value": "bananas" },
我们如何通过 power-shell 获取包含 TAG Project 值“bananas”的所有资源的列表?
我能够使用以下脚本获取我所有的 EC2:
$instance = Get-EC2Instance
-Filter @( @{name='tag:Project'; values="bananas"};
@{name='instance-state-code'; values = 16} )
| Select-Object -ExpandProperty instances #Get instance ID 忽略任何终止的实例 $instance | 导出-CSV "C:\ec2.csv"
但我不确定如何使用一个脚本获取我所有的标记资源。
powershell amazon-web-services aws-powershell aws-resource-group