- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题陈述
我的 R53 域名和托管区域在账户 A 中。我想在账户 B(通过 SAM 模型)中创建一个 API,它将在账户 A 中声明一个自定义域名。
这是我的示例 SAM 模板
AWSTemplateFormatVersion : '2010-09-09'
Globals:
Api:
OpenApiVersion: 3.0.1
Transform: AWS::Serverless-2016-10-31
Resources:
ApiGatewayApi:
Type: AWS::Serverless::Api
Properties:
Domain:
CertificateArn: pCertificateArn
BasePath:
- pVersion
DomainName: pCustomDomainName
Route53:
HostedZoneId: pHostedZoneId
EndpointConfiguration: REGIONAL
StageName: pStageName
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri:
Handler: hello.lambdaHandler
Runtime: nodejs12.x
Events:
AuthApi:
Type: Api
Properties:
Path: /hello-main
Method: GET
RestApiId: !Ref ApiGatewayApi
我通过管道执行这个 SAM 模板,这里是管道部署角色的代码。这将在账户 B 中执行
rDeployProjectRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub '${AWS::StackName}-DEPLOYPROJECT-ROLE-${pEnv}'
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- cloudformation.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: !Sub '${AWS::StackName}-DEPLOYPROJECT-POLICY-${pEnv}'
PolicyDocument:
Version: '2012-10-17'
Statement:
<highlighting only the necessary assumed role>
- Effect: Allow
Action:
- sts:AssumeRole
Resource: !Ref pRoute53AssumedRoleArn
现在在我的账户 A 中,我创建了一个角色来像这样授予对账户 B 的访问权限
AWSTemplateFormatVersion: "2010-09-09"
Resources:
CreateRoute53Role:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
AWS:
- arn:aws:iam::<Account B>:root
Action:
- sts:AssumeRole
Path: "/"
Policies:
- PolicyName: Route53Access
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- route53:*
Resource:
- arn:aws:route53:::hostedzone/XXX
每次我运行上面的代码时,它都会因 cfn 堆栈中的错误而失败 -
API: route53:GetHostedZone User: arn:aws:sts::XXX:assumed-role/XXX-DEPLOYPROJECT-ROLE-dev/AWSCloudFormation is not authorized to access this resource
有趣的是,当我在 IAM 中查找角色 (XXX-DEPLOYPROJECT-ROLE-dev) 并查看访问顾问时,它说我的 pRoute53AssumedRoleArn 甚至没有被访问。我不确定我做错了什么。
此外,如果我要通过帐户 A 中的 SAM 模板创建我的 API,它会创建得非常好,使用自定义域名,这正是我想要的方式。
好像只有跨账号域名访问有问题。
最佳答案
我知道这个问题是前一段时间发布的,但也许这会有点帮助,因为它并没有完全满足原始发布者的要求。
我的解决方法是将帐户 A 中的 route53 域委托(delegate)给使用我的 api 的帐户(帐户 B)。这基本上允许我在帐户 B 中设置所有内容,并避免尝试正确设置所有权限以使其跨帐户工作。此设置的一个很好的副作用是,这意味着我不允许账户 B 访问权限以更改账户 A 中的主要 DNS 设置。
委派子域名的说明在这里:https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingNewSubdomain.html
这篇文章描述了如何从根本上实现流程自动化(这比我的项目需要的多得多),但如果您大规模需要此功能,可能会对您有所帮助:https://hitthecloudrunning.com/blog/2020/04/12/managing-cross-account-dns-with-route-53-lambda-and-cloudformation/
关于amazon-web-services - AWS SAM 模型在使用跨账户托管区域创建具有自定义域名的 API 时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60913744/
我正在构建一些无服务器应用程序并尝试使用 SAM。我已经阅读了一些教程和一些使用 sam build ,而其他人使用 sam package . 这些命令之间有什么区别?似乎 sam 包更难使用。 最
我有一个 AWS SAM 模板,它定义了一个引用其他几个嵌套应用程序的应用程序。 我需要将一个嵌套应用程序的输出传递给另一个嵌套应用程序的参数,但我不确定语法是否正确。 这是包含嵌套应用程序的模板示例
我使用 JSONschema 定义了一个模型并将其设置为 lambda。我可以看到模型被添加到请求正文中,如下图所示 但我还需要设置请求验证器来验证它。这是我下面的示例 AWS SAM 模板。 Res
我正在尝试创建具有多个 AWS 无服务器功能的 AWS SAM 应用程序。 该应用程序有 1 个 template.yaml 文件,其中包含 2 个不同的无服务器 lambda 函数的资源,例如“Co
我一直在寻找 aws-sam-local 单元测试策略,但没有找到太多。只是在寻找建议? 最佳答案 要在“tests”目录中运行“test_handler.py”,您可以执行以下操作。您可能不需要所有
我正在尝试按照 Hello World example 部署 AWS 无服务器应用程序,但在使用 sam deploy --guided 时出现安全约束不满足错误。我在每个提示下按 Enter 以接受
我正在开发一个用 python3.6 编写的 Lambda 函数以进行本地测试,然后在工作后部署到 AWS。为此,我正在使用 PyCharm 的 AWS Serverless Toolkit。 不包含
我正在向现有无服务器应用程序添加 SAM 模板。我有一个没有。调用其他 lambda 的 lambda,并且调用者具有指定“被调用者”或调用的 lambda 的 ARN 的策略。在这种情况下,策略创建
使用 sam build我希望不包含 aws-sdk 的命令包,因为 Node.js Lambda 运行时已经包含它。 据我了解sam build对于 nodejs 是 claudia pack 的端
我正在开发具有 lambda 函数的 SAM 应用程序,API 网关作为事件源。 API Endpoint 是一种 POST 方法,需要在请求正文中设置一组参数。 API Gateway 通过使用 A
嗨,我有一个 sam 应用程序,它有一个 lambda 函数,可以从按预期工作的其余端点调用,但是当我尝试使用 sam local start-lambda 或 sam local start-api
我正在尝试使用 SAM(无服务器应用程序模型)和用 Java 编写的 Lambda 构建一个 AWS 应用程序。 通过在模板中使用这样的资源定义,我能够让它在本地运行: Resources: He
我使用 AWS SAM 生成我的 Lambda/API。但我希望能够获取此 RestApi,以便我可以在另一个 SAM 模板中使用它。 这个想法是拥有 1 个基础设施 CloudFormation/S
我可以调用本地 lambda http 端点(sam local start-lambda),但是如何使用(模拟)AWS 事件(s3 等)触发该 lambda 端点,就像使用 Dockerized l
我尝试直接将编译后的 CloudFormation 文件与 SAM Local 结合使用。我找不到办法做到这一点,有人成功实现了这一点吗? 最佳答案 好吧,假设您想在本地测试您配置的 lambda,您
我目前正在尝试设置一个应该执行简单 TestCafe 测试的 AWS Lambda (nodejs10.x) 函数。 如果我使用 sam local invoke --no-event 在本地运行我的
我使用AWS SAM应用程序和SAM模板来模拟API服务(API Gateway和Lambda)。Lambda运行在Python3.8上。。最近,我升级到了最新版本的SAM CLI。我使用命令‘Sam
按照 https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli
我有一个需要通过 Amazon API Gateway 触发的 lambda 函数。有没有办法将现有的 API(使用 AWS 控制台创建)包含到 AWS SAM 模板中? 最佳答案 SAM 尚不支持模
在尝试 SAM 部署时,我收到以下拒绝信息: 1 validation error detected: Value 'arn:aws:iam::${AWS::AccountId}:role/Lambd
我是一名优秀的程序员,十分优秀!