我无法使用PHP SDK v2.7.16将消息发送到FIFO队列。
我收到一个异常:即使我传递了有效的MessageGroupId参数,“请求必须包含参数MessageGroupId” 。
public function sendMessage($queueUrl,$messageBody)
{
$this->client->sendMessage(array(
'QueueUrl' => $queueUrl,
'MessageBody' => $messageBody,
'MessageGroupId'=>'messagegroupid1000',
'MessageDeduplicationID'=>'messagededuplicationid1000'));
}
Run Code Online (Sandbox Code Playgroud)
怎么了?
作为主题。我尝试从 RabbitMQ 迁移到 SQS。想知道是否有任何正常运行时间保证或类似保证。我所能发现的是,Amazon SQS 将消息存储在跨给定区域的所有可用区的分布式存储中。这是否意味着 SQS 与 AWS 区域一样可靠,或者大多数时候可靠性达到 99.9%(或更好)?
以下是来自https://github.com/andrewpuch/aws-ses-node-js-examples的代码, 其中有一个示例可以发送和通过电子邮件发送附件,
我修改了代码以从 aws s3 获取图像文件并将其与邮件作为附件一起发送,当我为文本文件执行此操作时,它运行良好,但是当我发送图像时,在邮件中我无法看到图像,因为它已损坏。
当我尝试使用苹果照片应用程序打开时,它显示缺少元数据,我还在邮件标题中添加了 Content-Transfer-Encoding: base64,当我在Content 中尝试使用 utf8、utf-8 和 UTF-8 时-Transfer-Encoding在标题中我从 aws 得到以下响应
{
"message": "Unknown encoding: utf8",
"code": "InvalidParameterValue",
"time": "2017-03-14T08:42:43.571Z",
"requestId": "2e220c33-0892-11e7-8a5a-1114bbc28c3e",
"statusCode": 400,
"retryable": false,
"retryDelay": 29.798455792479217
}
Run Code Online (Sandbox Code Playgroud)
我修改后的代码用于发送带有邮件的图像附件,我什至尝试将缓冲区编码为 utf-8、base-64,在此上浪费了足够的时间,不知道为什么它已损坏,如果有人以前这样做过,请帮助我
// Require objects.
var express = require('express');
var app = express();
var aws = require('aws-sdk');
// Edit this with YOUR email address.
var email = "*******@gmail.com";
// Load your AWS credentials and try to instantiate the object.
aws.config.loadFromPath(__dirname …Run Code Online (Sandbox Code Playgroud) 我已将我的React应用程序部署到s3. 我正在使用 Cloudfront 来使用证书并s3 bucket通过HTTPS. 在努力设置完所有内容后,我设法设置了所有内容,现在运行良好。
现在我更新了我的项目,创建了一个新版本bundle.js,上传到s3.
我现在的问题是mydomain.com指向 V1bundle.js
所以我试图挖掘更多,这是我发现的:
mydomain.com 指向 V1xxxxx.cloudfront.net 指向 V1mydomain.com.s3-website-eu-west-1.amazonaws.com 指向 V2所以我的猜测是出于某种原因,cloudfront指向 V1,但为什么呢?那里有一些缓存吗?
这是配置,以防万一:
Route53 Type A 指着 xxxxxx.cloudfront.netcloudfront 域是 xxxxxx.cloudfront.netcloudfront CNAMES是mydomain.com和www.mydomain.comcloudfront origin domain name and path 是 mydomain.com.s3-website-eu-west-1.amazonaws.coms3 bucket 是 mydomain.comPS:只是为了仔细检查问题不仅来自bundle.js,我从存储桶中删除了背景图像,但不知何故,访问时仍然找到并使用它mydomain.com(因此显示V1)
amazon-s3 amazon-web-services amazon-cloudfront amazon-route53 reactjs
我们计划将 AWS SES 与 SQS 结合使用。这个想法是将电子邮件内容推送到 SQS,然后 SES 获取队列项目并发送电子邮件。我们正在使用 PHP。我们只是希望在不影响网络服务器性能的情况下实现这一点。
好吧,我对aws cli非常困惑
我有一个S3桶:
s3://my-bucket
directory/
file1
file2
backup-logs-1234
backup-logs-5678
Run Code Online (Sandbox Code Playgroud)
我已经验证了文件在s3桶中,我可以看到它们 aws s3 ls s3://my-bucket
我正在尝试删除文件夹中的所有备份日志(其中8000个).我已经尝试了我能想到的包含/排除的每种组合
1)由于某种原因aws s3 rm "s3://my-bucket/" --include "*backup-logs*" --dryrun试图删除s3://my-bucket/directory/
2)aws s3 rm "s3://my-bucket/" --exclude "*" --include "*backup-logs*" --dryrun没有看到任何要删除的文件
3)我也尝试了"备份"的不同子串(例如b,ba,back)
4)我也尝试添加递归(即使我不希望它),它发现所有文件directory/都符合模式,但没有一个顶层的文件
我确定我做的事情很愚蠢.在此先感谢您的帮助
我有一个Lambda函数,我需要从中进行外部API调用.我已将Lambda函数添加到安全组,VPC和2个子网,它为我提供了以下文本:
启用VPC后,您的Lambda函数将失去默认的Internet访问权限.如果您的功能需要外部Internet访问,请确保您的安全组允许出站连接,并确保您的VPC具有NAT网关.
我进入VPC,创建一个NAT网关(我让AWS创建一个EIP),将它附加到我的lambda函数的一个子网上.
出于调试目的,我的安全组出站功能设置为所有流量/所有目的地(0.0.0.0/0).此VPC的网络ACL也设置为此(具有5个子网,包括具有NAT网关的子网):
100 | ALL Traffic | ALL | ALL | 0.0.0.0/0 | ALLOW
Run Code Online (Sandbox Code Playgroud)
具有相同2个子网的路由表位于VPC上,0.0.0.0/0路由设置为以NAT网关为目标.
VPC上还有一个带有3个其他子网的不同路由表,0.0.0.0/0路由设置为目标Internet网关.
两个路由表都具有相同的local目标IP(VPC的IP).
我得到的错误是:
{ Error: connect ETIMEDOUT x.x.x.x:443
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
code: 'ETIMEDOUT',
errno: 'ETIMEDOUT',
syscall: 'connect',
address: 'x.x.x.x',
port: 443 }
Run Code Online (Sandbox Code Playgroud)
我正在运行的节点代码在我的桌面节点环境中工作,POST调用在postman中工作,所以我很确定这是我的AWS配置的问题.
我一直在使用这种情况作为资源:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html
我在 WebHook 的特定标头中获得签名。我想在令牌主体或属性中将其传递给 SQS。我尝试过以下配置。它不起作用。请帮忙
详情如下:
AWS Service : Simple Queue Service (SQS)
HTTP method :POST
Path override :Account/QueueName?Action=SendMessage
Execution role :arn:aws:iam::Acc#:role
Content Handling :Passthrough
Body Mapping Templates :
Content-Type : application/json
{
"MessageBody" : {
"payload": $input.json('$'),
"x-api-key" : "$input.params('x-api-key')"
}
}
Instead of MessageBody, I also tried with "body".
Response I get :
{
"Error": {
"Code": "MissingParameter",
"Message": "The request must contain the parameter MessageBody.",
"Type": "Sender"
},
"RequestId": "d5fc3acf-18dc-5379-9af2-6b4cc42358f3"
}
Run Code Online (Sandbox Code Playgroud)
我缺少什么?请帮忙。我几乎花了一整天的时间试图弄清楚。
提前致谢。
我的团队想要在 cloudformation 模板中创建一个 S3 存储桶,而不为其分配存储桶名称(让 cloudformation 自行命名)。
从我的 lambda 函数将文件放入 S3 存储桶时,有没有办法让我获取 S3 存储桶的名称,而无需手动查看 AWS 控制台并检查创建的名称?
我根据本文在EC2实例上设置了PTR记录:https : //aws.amazon.com/premiumsupport/knowledge-center/route-53-reverse-dns/。但是,当我使用dig这样的工具测试rDNS时,其结果始终为我提供xxx.compute.amazonaws.com域。我已经等待了几次刷新时间,并多次执行了本文中的步骤,但是记录没有改变。我还为“ in-addr.arpa”托管区域设置了NS记录,以匹配我域的NS记录。
我的设置是:
Hosted zone 1: "domain.com."
Hosted zone 1 A record: name "domain.com." value "1.2.3.4"
Hosted zone 2: "3.2.1.in-addr.arpa."
Hosted zone 2 PTR record: name "4.3.2.1.in-addr.arpa." value "domain.com"
Run Code Online (Sandbox Code Playgroud)
我在这里想念什么吗?我还有其他步骤应该采取吗?或者您对如何进一步调试有任何建议?
好像outlook.com一直将我的邮件标记为垃圾邮件,因为rDNS不正确。
很感谢任何形式的帮助。
amazon-s3 ×4
amazon-sqs ×4
aws-lambda ×2
node.js ×2
amazon-ec2 ×1
amazon-ses ×1
amazon-vpc ×1
aws-cli ×1
aws-sdk ×1
boto3 ×1
php ×1
reactjs ×1
reverse-dns ×1