所以我正在尝试为我的应用程序设置CodeDeploy,并且在部署的BeforeInstall部分期间我一直收到错误.以下是错误.
Error Code UnknownError
Script Name
Message No such file or directory - /opt/codedeploy-agent/deployment-root/06100f1b-5495-42d9-bd01-f33d59fb5deb/d-NL5K1THE8/deployment-archive/appspec.yml
Log Tail
Run Code Online (Sandbox Code Playgroud)
我认为这意味着YAML文件位于错误的位置.但是它位于我的修订版的根目录中.我尝试使用像这样的简单AppSpec文件而不是更复杂的文件.
## YAML Template.
---
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/www
Run Code Online (Sandbox Code Playgroud)
或多或少,因为这是第一次部署,我希望它将修订中的所有文件添加到Web服务器上的公共目录中.
我正在撕裂我的头发,我觉得这是一个简单的问题.我有正确的IAM策略和角色,我有我正在尝试部署到的实例上的CodeDeploy设置和运行.
我正在尝试将json字符串发布到API网关,然后让API网关将JSON发送到EC2服务器.
我的问题是我找不到亚马逊关于如何实现这一目标的好文档.
当我测试设置时,我得到了这个
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response><Errors><Error><Code>InvalidHttpRequest</Code><Message>The HTTP request is invalid. Reason: Unable to parse request</Message></Error></Errors><RequestID>1fa47f52-d75c-4ff8-8992-3eac11a79015</RequestID></Response>"
Run Code Online (Sandbox Code Playgroud)
这对我来说意义不大.我认为这是一个问题,API网关试图将请求发送到EC2,它不能生成此错误.因此,我可能错误地在API网关中设置了EC2 AWS服务代理.这可能是因为我不知道我应该将'Action'设置为现在我指向EC2实例,只是因为我没有看到任何其他地方放置该信息.
这真的不应该那么难,我已经成功完成了连接到Lambda的这个东西,并查看了所有文档,我可以找到的是:http://docs.aws.amazon.com/apigateway/latest/developerguide/越来越开工-AWS-proxy.html#工具入门-AWS代理加资源
这对于这种情况不太有帮助.有任何想法吗?
我正在尝试使用带有Javascript SDK的UpdateItem将字符串集添加到项目内的另一个字符串集中
我的参数是这样的:
var params = {
Key: {
"MyKeyName" : {"S" : "MyKeyValue" }
},
TableName: "TableName",
ExpressionAttributeNames: {
"#Name1" : "mapName"
},
ExpressionAttributeValues: {
":Value1" : {"M" : {"StringSetName" : {
"SS": ["ValueToAdd"]
}
}
}
},
UpdateExpression: "ADD #Name1 :Value1"
};
Run Code Online (Sandbox Code Playgroud)
现在这不起作用,因为ADD仅适用于数字和集合,并且此集合嵌套在地图下,它会触发此错误:
操作符或函数的操作数类型不正确; operator:ADD,操作数类型:MAP
我尝试将属性名称更改为mapName.M.StringSetName,并创建了值{"SS" : ["ValueToAdd"].这不会触发错误但它也没有将值添加到集合中.
关于如何做到这一点的任何想法,听起来应该是接近我正在尝试的东西.
所以我启用了CORS,完成了AWS Gateway提供的基本设置.但是对于此API,我需要允许所有请求的Control Origins并允许凭据.
这是它的样子
您可能已经猜到的问题是CORS不允许此设置,您不能拥有Origin的通配符并且凭据为true.通常,解决此问题的方法是抓取请求域并将其添加到Origin Header中.这或多或少是我想要做的.但我不知道如何获取该信息并将其添加为映射值.API Gateway在哪里存储该信息以及如何获取该信息?
更新:我必须通过HTTP标头主机传递给我之前应该提到的Lambda函数,我已经尝试实现下面的答案,但我无法使用提供的说明访问标头将其传递给Lambda函数.我们非常感谢您提供更多帮助.
所以我在PHP中有以下数据数组
$array = array(
"animal" => "panda",
"location" => "San Diego",
"age" => "2",
),
array(
"animal" => "tiger",
"location" => "Bronx",
"age" => "5",
),
array(
"animal" => "panda",
"location" => "Bronx",
"age" => "3",
),
array(
"animal" => "tiger",
"location" => "bronx",
"age" => "3",
),
array(
"animal" => "panda",
"location" => "San Diego",
"age" => "2",
)
)
Run Code Online (Sandbox Code Playgroud)
我想要做的是将其转换为一个关联数组,其中包含动物,位置和年龄的计数.所以,如果我想看看有多少只大熊猫在圣地亚哥并且是2岁,我将使用新的数组,$newArray['panda']['San Diego']['2']输出为2.
我的问题是我可以轻松地运行一个循环并构建一个数组,并在它完全静态时计算项目.
foreach($array as $a) {
$newArray[$a['animal']][$a['location']][$a['age']] += 1;
}
Run Code Online (Sandbox Code Playgroud)
但是,当键的数量是动态的时候,我想知道如何实现相同的概念.例如,如果在一个电话中只有位置和动物,有时在另一个电话中可能有位置,动物,年龄和性别.
我发现有一些例子可以解释为关联数组执行此操作但不适用于具有此特定用例的多维数组.
有什么想法吗?