- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 AWS IoT 聊天应用程序,其 UI 位于 React 上,为了进行 AWS 配置,我有一个使用“无服务器部署”命令执行的设置。执行时,会执行 serverless.yml,并在抛出错误时中断:CloudFormation 模板无效:模板格式错误:每个输出成员必须包含值对象
serverless.yml 代码如下:
resources:
Resources:
UserTable:
Type: "AWS::DynamoDB::Table"
Properties:
TableName: "IotChatUsers"
AttributeDefinitions:
- AttributeName: identityId
AttributeType: S
KeySchema:
- AttributeName: identityId
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
ChatTable:
Type: "AWS::DynamoDB::Table"
Properties:
TableName: "IotChatChats"
AttributeDefinitions:
- AttributeName: name
AttributeType: S
KeySchema:
- AttributeName: name
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
ConnectPolicy:
Type: "AWS::IoT::Policy"
Properties:
PolicyName: IotChatConnectPolicy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action:
- "iot:Connect"
Resource:
- "*"
PublicSubscribePolicy:
Type: "AWS::IoT::Policy"
Properties:
PolicyName: IotChatPublicSubscribePolicy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action:
- "iot:Subscribe"
Resource: { "Fn::Join" : ["",["arn:aws:iot:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":topicfilter/room/public/*"]] }
PublicReceivePolicy:
Type: "AWS::IoT::Policy"
Properties:
PolicyName: IotChatPublicReceivePolicy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action:
- "iot:Receive"
Resource: { "Fn::Join" : ["",["arn:aws:iot:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":topic/room/public/*"]] }
UserPool:
Type: "AWS::Cognito::UserPool"
Properties:
UserPoolName: iot_chat_api_user_pool
AutoVerifiedAttributes:
- email
MfaConfiguration: OFF
Schema:
- AttributeDataType: String
Name: email
Required: true
ReactAppClient:
Type: AWS::Cognito::UserPoolClient
Properties:
GenerateSecret: false
RefreshTokenValidity: 200
UserPoolId:
Ref: UserPool
IdentityPool:
Type: "AWS::Cognito::IdentityPool"
Properties:
IdentityPoolName: iot_chat_api_identity_pool
AllowUnauthenticatedIdentities: false
CognitoIdentityProviders:
- ClientId:
Ref: ReactAppClient
ProviderName:
Fn::GetAtt: UserPool.ProviderName
SupportedLoginProviders:
graph.facebook.com: ${self:custom.variables.facebook_app_id}
accounts.google.com: ${self:custom.variables.google_app_id}
IdentityPoolAuthRole:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Federated:
- "cognito-identity.amazonaws.com"
Action:
- "sts:AssumeRoleWithWebIdentity"
Condition:
StringEquals:
cognito-identity.amazonaws.com:aud:
Ref: IdentityPool
ForAnyValue:StringLike:
cognito-identity.amazonaws.com:amr: authenticated
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AWSIoTDataAccess
Path: "/"
Policies:
- PolicyName: iot-chat-invoke-api-gateway
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- execute-api:Invoke
Resource: { "Fn::Join" : ["", ["arn:aws:execute-api:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":",{"Ref":"ApiGatewayRestApi"},"/*"]] }
IdentityPoolRoleAttachment:
Type: AWS::Cognito::IdentityPoolRoleAttachment
Properties:
IdentityPoolId:
Ref: IdentityPool
Roles:
authenticated:
Fn::GetAtt:
- IdentityPoolAuthRole
- Arn
ConfirmUserInvocationPermission:
Type: AWS::Lambda::Permission
Properties:
Action: lambda:InvokeFunction
FunctionName:
Fn::GetAtt: AutoConfirmUserLambdaFunction.Arn
Principal: cognito-idp.amazonaws.com
SourceArn:
Fn::GetAtt: UserPool.Arn
Outputs:
UserPoolId:
Description: "The ID of the user pool that is created."
Value:
Ref: UserPool
ReactAppClientId:
Description: "The ID of the user pool react app client id."
Value:
Ref: ReactAppClient
IdentityPoolId:
Description: "The ID of the identity pool that is created."
Value:
Ref: IdentityPool
AutoConfirmUserFnArn:
Description: "The ARN of the Auto Confirm User Lambda function"
Value:
Fn::GetAtt:
- AutoConfirmUserLambdaFunction
- Arn
FacebookAppId:
Description: "Facebook App Id"
Value: ${self:custom.variables.facebook_app_id}
GoogleAppId:
Description: "Google App Id"
Value: ${self:custom.variables.google_app_id}
我需要一些洞察力来找出导致我出现此验证错误的 serverless.yml 出了什么问题。
Environment Information -----------------------------
OS: win32
Node Version: 8.9.1
Serverless Version: 1.25.0
更新:
解析下面的 YAML 是输出节点的结果:
"Outputs": {
"IdentityPoolId": {
"Description": "The ID of the identity pool that is created.",
"Value": {
"Ref": "IdentityPool"
}
},
"FacebookAppId": {
"Description": "Facebook App Id",
"Value": "${self:custom.variables.facebook_app_id}"
},
"ReactAppClientId": {
"Description": "The ID of the user pool react app client id.",
"Value": {
"Ref": "ReactAppClient"
}
},
"GoogleAppId": {
"Description": "Google App Id",
"Value": "${self:custom.variables.google_app_id}"
},
"UserPoolId": {
"Description": "The ID of the user pool that is created.",
"Value": {
"Ref": "UserPool"
}
},
"AutoConfirmUserFnArn": {
"Description": "The ARN of the Auto Confirm User Lambda function",
"Value": {
"Fn::GetAtt": [
"AutoConfirmUserLambdaFunction",
"Arn"
]
}
}
}
更新2:
这是完整应用程序的来源:aws-iot-chat-example
最佳答案
CloudFormation 通常会提供模糊或难以跟踪的错误,并且从不报告带有行号的错误,就像许多解释器/编译器/解析器一样。因此,追踪它们通常是一个反复试验的过程。
在您的情况下,错误消息仅提到错误出现在模板的 Output
部分,但没有提及哪个值有问题。该部分中有 6 个值。
故障排除的一个好方法是一次删除每个项目一个或两个,然后重新运行模板。由于输出值只是输出 - 此模板不需要它们,而是在稍后的创建过程中将数据公开给其他模板。只需按照建议删除它们,然后使用此技术来隔离值中存在错误的字段即可。
一个好的健全性检查是删除整个 Outputs
部分,并确认模板的重置按预期创建。
一旦找到有问题的字段,您就需要找到主要问题:每个 Outputs 成员都必须包含一个 Value 对象
要解决此问题,请跟踪所引用的对象,并追溯到源资源或资源属性。由于某种原因,这些引用没有引用有效的对象。
我会注意到,在您的评论中,您确定了两个导致错误的字段。两者似乎都使用 self:custom.variables.google_app_id
形式的变量引用 - 这些值无法正确解析。如上所述检查其来源。我怀疑它们没有被正确解析。我不认为该构造是有效的 CloudFormation 语法。
关于amazon-web-services - CloudFormation 模板无效 : Template format error: Every Outputs member must contain a Value object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48221323/
给定一个元素列表,如果每个元素都需要了解此列表中每个其他元素的状态,如何处理所有元素? 例如,在 Python 中实现它的直接方法可能是: S = [1,2,3,4] for e in S: fo
我在嵌套循环方面遇到问题。请看下面的 fiddle : http://jsfiddle.net/7znfmp9o/ 我希望每个部分都能获得视差效果,但是这里发生了一些奇怪的事情。 .each() 代码
好吧,伙计们,我正在尝试在另一个 for every row 循环中执行一个 for every row 循环,我对 mysql 真的很陌生,这是我的第一个触发器我有一个名为 Disponivel 的
我目前正在开发一个基于 Arc-Theme 的 GTK 主题。(你可以在这里看到我目前的进度:https://plus.google.com/u/0/100718986567621730640/pos
我将一个事件设置为某个月的 13 号,并每月重复一次。每个月都会正确地重复它。但是,当将其设置为某个月的 31 日时,它只会设置为 31 日的月份,并且如果它显示在“编辑”->“重复”->“每月重复”
我试图通过在 session 中存储数据来在每个 View 页面中显示记录的用户名。 但是我必须在每个函数中编写相同的两行..我正在获取用户数据,但是还有其他方法可以做到这一点吗?因为我认为重复相同
我需要每天从 8 点到 10 点到 10 点到 30 点每 10 分钟和 30 分钟运行一次任务: start at 8:10 -> 8:30 -> 9:10 -> .. -> 10:30 finis
我已经在文档中进行了一些搜索,并在网上花了一段时间,但找不到解决方案!我希望警报告诉我单击 .thumb 时它处于each() 的哪一次迭代。 EG:有六个.thumb,我点击数字3,浏览器弹出3!
谁能告诉我为什么循环在 5 条目之后没有停止? http://jsbin.com/ucuqot/edit#preview $(document).ready(function() { someA
我对实现 _.every() 有疑问。 我的代码在这里 _.every = function(collection, iterator) { if (collection.length =
我从面向对象编程开始我有以下问题:我开了一个新课然后我就从这门课开始现在,对于每个实例我想做一些事情我用 foreach 循环尝试过,但它不起作用......存在一些语法问题 这是类(class):
我尝试使用 jquery each() 函数在每次迭代后添加 0.5 增量。我必须在 li 上添加 animatoin-delay 属性,该属性的值应该增加 (0.5),以便我可以在文档加载时为它们设
首先看一下这段代码。示例我有 5 个具有必需类的输入字段。 var errMsg = "This is required!" $(function() { $(".required").each
因此,我正在尝试重新创建“every”方法,作为 Eloquent JavaScript 练习的一部分。我不明白为什么第二版不起作用(第一版有效)。 书上说“只有当谓词对数组的所有元素都返回真时,ev
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
有人可以告诉我为什么这会返回 true 吗?它应该返回 false,因为在第一次迭代中 value[pre] === 0... 谢谢。 function truthCheck(collection,
我正在尝试使用 Array 的 .every 来查看数组中的项目是否是连续的(1、2、3、4、5)。为什么当其中的所有内容都是 true 时返回 false? const nums = [1, 2,
var arr=[]; var k; for(var i=0;i native loop 2: 0ms 嗯,现在有点太快了。也许 arr 应该更大: var arr=[]; for(var i=0;i
这是一些 Javascript 数组方法的常见问题。以下面为例: var numbers = new Array(12, 5, 8, 130, 44); function isBigEnough(el
这个问题已经有答案了: Arrow function without curly braces (9 个回答) When should I use a return statement in ES6
我是一名优秀的程序员,十分优秀!