我正在使用 SAM 模板和 CLI 创建一个 cloudformation 堆栈。我已经使用一个帐户成功完成了此操作,该帐户从直接附加到该帐户的策略中获取了所有必需的权限。向此帐户授予所有这些权限是很差的安全实践,因此我创建了一个附加了相同策略的角色,并希望将其用于部署。但是,即使我通过--role-arn参数传递我的角色,该命令仍然会向帐户查找权限。
以下是我尝试使用的命令:
aws cloudformation deploy --template-file TemplatePackaged.yaml --stack-name TestStack --capabilities CAPABILITY_IAM --region us-east-1 --role-arn arn:aws:iam::666488004797:role/LambdaApplicationCreateRole
Run Code Online (Sandbox Code Playgroud)
或者
sam deploy --template-file TemplatePackaged.yaml --stack-name TestStack --capabilities CAPABILITY_IAM --region us-east-1 --role-arn arn:aws:iam::666488004797:role/LambdaApplicationCreateRole
Run Code Online (Sandbox Code Playgroud)
除非登录 cli 的用户具有所需的权限,否则我使用任一命令都会收到错误:
调用DescribeStacks操作时发生错误(AccessDenied):用户:arn:aws:iam :: 666488004797:user/DummyUser1无权在资源:arn:aws:cloudformation:us-east-1上执行:cloudformation:DescribeStacks: 666488004797:堆栈/梅丽莎/*
如何让deploy命令使用--role-arn参数中传递的角色来获取它需要的权限?
我创建了一个 API 网关来运行 Lambda 函数。这旨在用作内部服务,因此我的 API 网关是私有的。为了使 API 网关能够私下访问,我执行了以下操作:
\n\n这些步骤有效地阻止公共请求,并允许通过 VPC 终端节点创建的 DNS 名称从本地发出请求。
\n\n这种方法的问题是为了调用 API,必须指定Host或x-apigw-api-id在请求中目标是让用户能够在浏览器上输入 URL 和查询字符串参数,并从服务获取响应。
Amazon API Gateway 类型、用例和性能讨论了一种避免指定 API ID 或主机的方法,但它没有提供太多细节。相关部分表示解决方案是:
\n\n\n\n\n将具有 SSL 证书(例如 api.mydomain.com)的应用程序负载均衡器放置在 PrivateLink 网络接口的 IP 地址前面。还为 api.mydomain.com 部署自定义域名,并为 API 网关部署基本路径映射。然后添加一条 Route 53 记录,将 api.mydomain.com 作为 ALB 的别名。这个解决方案相当复杂,但我们\xe2\x80\x99已经测试过它并且它有效。描述完整的解决方案超出了本文的范围,但我们稍后可能会写一篇单独的博客文章。
\n
有谁知道如何做到这一点或不同的方法?
\n