问题标签 [aws-php-sdk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - AWS SDK php S3 拒绝访问存储桶名称 xx.my_domain.com
我想使用 AWS S3 为我的网站存储图像文件。我创建了一个存储桶名称 images.mydomain.com,它由 AWS Route 53 中的 dns cname images.mydomain.com 引用。
我想检查一个文件夹或文件是否存在;如果没有,我将创建一个。
以下 php 代码适用于使用流包装器的常规存储桶名称,但对于此类存储桶名称(例如 xxxx.mydomain.com)失败。这种存储桶名称在 dosObjectExist() 方法中也失败了。
我收到以下消息
警告:您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有未来请求发送到此端点:“images.mydomain.com.s3.amazonaws.com”。在第 737 行的 C:\AppServ\www\ecity\vendor\aws\aws-sdk-php\src\Aws\S3\StreamWrapper.php
这里有什么问题?
有什么建议可以解决这种情况吗?
谢谢!
php - 使用 AWS PHP SDK v2 在 S3 区域之间进行非阻塞对象复制
S3Client->copyObject()
我正在尝试使用AWS PHP SDK v2 中的操作在位于不同区域的存储桶之间复制 Amazon S3 中的大型对象。
对象复制确实有效,但问题是复制操作可能需要相当长的时间才能返回响应,并且它会阻止 PHP 脚本的执行,这不是我在这种特殊情况下想要的。
有什么方法可以copyObject()
通过 SDK 以非阻塞方式进行调用(可能使用一些较低级别的 Guzzle 设置)?我需要这种非阻塞行为,因为我必须将定期运行状况检查发送到另一项服务 (Amazon SWF) 以让它知道我的脚本仍在运行。
如果无法以非阻塞方式执行调用,我知道还有其他可能的解决方案,但我希望从具有更多 SDK 经验的人那里获得更多想法。
(我认为我可以采取的一种可能的方法是处理并在子进程fork()
中执行copyObject()
操作;此外,如果 Guzzle 支持某种进度回调并且它确保回调方法至少在每个分钟)
php - aws s3 php:无法使用 UploadSyncBuilder 上传目录
我正在尝试使用 aws php sdk 将 14MB 目录上传到 s3。这些是以下场景及其结果
- 从我的本地系统(印度)上传到 s3(us-east-1):成功
- 从 ec2(ap-southeast-1) 上传到 s3(ap-southeast-1):成功
- 从 ec2(ap-southeast-1) 上传到 s3(us-east-1):失败
我使用过的以下代码
例外
我也有设置日志来调试和挖掘 Guzzle 库。我发现当它失败时,对于请求没有响应。当我将并发设置为 1 时,它会成功但需要很长时间。即使在 2 并发时它也会失败。
如果任何文件失败,则整个上传失败,使其处于部分上传状态。如果出现故障,我找不到任何方法来设置重试选项。
感谢帮助!
php - 在 s3 php sdk 中为 putObject 设置过期
这是用于创建存储桶和 putObject 的工作代码:
如何为这个刚刚创建的对象设置到期日期?例如。我想看到上传的文件在 3 天后消失。
php - 使用自定义 DynamoDB 会话处理程序登录后 Symfony 会话为空
我正在把头发拉到这个上面。
我已经使用 DynamoDB 和 AWS PHP SDK 实现了 Symfony 会话处理程序:http: //docs.aws.amazon.com/aws-sdk-php/guide/latest/feature-dynamodb-session-handler.html
会话处理程序在我的本地计算机上似乎工作得很好,我可以看到在 Dynamo 中正确创建了会话,然后当我登录时创建了一个新会话,并且数据按预期迁移到它。这里一切都好。
问题是,当我将其推送到 AWS 上的暂存服务器或生产服务器时,迁移会话时出现问题。我转到我的登录页面,我可以看到会话已按预期创建,然后当我登录时,创建了一个新会话,但数据没有迁移到它,导致它把我转储回登录页面。
在过去的两天里,我一直在四处挖掘,试图找出问题所在,但我无法弄清楚。
我已经尝试了这个错误线程中的每一个建议,但没有一个有效,所以我假设我可能正在处理一个单独的问题:https ://github.com/symfony/symfony/issues/6417
我也尝试过使用pessimistic
locking_strategy
which 似乎没有任何区别。
登台和生产服务器具有与我的本地设置完全相同的配置,减去 xDebug。
我已将登台服务器置于开发模式并启用调试以尝试在探查器中找到问题,但我在那里看不到任何感兴趣的内容,请求如下:
- 获取
domain.com/login
(会话 a) - POST
domain.com/login_check
(会议一) - 获取
domain.com
(会话 b) - 获取
domain.com/login
(会话 b)
上面的模式不断重复。
任何有关如何调试的方向都将不胜感激,我什至不确定在哪里看,尤其是看到我无法使用 xDebug 在本地机器上重现。
php - AWS PHP SDK 将文件上传到 S3 令人困惑的错误
好的,所以我尝试了几种方法将文件上传到我的 S3 帐户。终于发现自己到了某个地方并且 BOOM - 令人困惑的文档和似乎自相矛盾的奇怪错误消息。
好的,首先我不使用作曲家或类似的东西,我正在用老式的方式来做这件事:
现在这可以正确加载,并且我已将自动加载缩减为仅使用 Common 和 S3 类 - 不需要一切!
接下来我加载 S3 客户端和凭据:
现在开始魔术发生的代码:
我似乎遇到的问题是“桶”本身。
当我将 Bucket 格式化为sub.domain.com时,我从 AWS API 收到以下消息:
AWS 错误消息:您尝试访问的存储桶必须使用指定的终端节点进行寻址。请将所有未来请求发送到此端点:“sub.domain.com.s3.amazonaws.com”。
现在,当我更改“桶”以匹配上述内容时,如下所示:sub.domain.com.s3.amazonaws.com
我收到以下错误消息:
AWS 错误消息:指定的存储桶不存在
难道我做错了什么?有什么遗漏吗?不幸的是,AWS 文档还没有达到标准。API 目前似乎自相矛盾。我知道所有的密钥都是正确的,所有的权限都是正确的。根据自己的建议,它从 301 - 重定向到 404 - Not Found。
任何帮助/建议将不胜感激。我觉得我在这里有点绕圈子!
php - PHP会话字符串包含奇怪的空白/空字符
背景故事:我一直在尝试在我的 Symfony2 应用程序中实现 DynamoDB 会话句柄。
当会话保存到 DynamoDB 时,我遇到了一个绊脚石。看来来自 PHP 的字符串采用某种奇怪的编码,其中包含不是空格的空白字符,这会阻止字符串正确保存在 DynamoDB 中。当我将它粘贴到 PhpStorm 时,该字符串也不会播放得很好。
这是其中的一个示例:
$illegalString = 's:8:"userData";O:27:"\SomeClass":49:{s:8:"�*�email";s:27:"me@domain.com";s:13:"�*�first_name";s:4:"Greg";';
作为参考,这是来自 PhpStorm 的屏幕截图,显示它不是空格。 此外,如果我尝试在这些字符上移动光标,其他字符开始出现,在我的光标下方的图像中,第 1 行最后一个分号左侧的几个空格,引号不存在字符串,但由于某种原因,当我的光标在它上面时它会出现。
如果您将上面的字符串复制/粘贴到下面的站点中,它会破坏页面:http ://www.asciivalue.com/index.php
三个问题:
- 这个字符串有什么问题?它是什么样的时髦编码?
- 为什么 PHP 以这种方式处理会话字符串?
- 创建会话字符串时如何告诉 PHP 仅使用 UTF-8?
注意:这似乎只在使用最新 Linux AMI 的 AWS ec2 上发生。
php - Store and retrieve nested JSON in DynamoDB with PHP SDK
I have created the following table in DynamoDB:
Field1: messageId / Type: String / Example value: 4873dd28-190a-4363-8299-403c535e160f
Field2: microtime / Type: Number / Example value: 14143960092414
Field3: data / Type: nested JSON-Array / Example value: {"foo":"bar","other":{"nested":1}}
I am performing the following request using PHP SDK for DynamoDB to create an entry
I want then to query the table and filter using variables within the JSON-array data field. Is my above solution to entering the data the right approach? The JSON-array gets stored as string, as to my understanding. Do we need another datatype? Basically, I can already query the table like below to retrieve messages that were added within the last minute:
But how can I modify my request to allow querying by ANY value within the data-field? For example, filter by only those who have [data][other][nested]=1
I've spent the past hours on this issue and I can't get it to work... I am very grateful for any tips, thanks in advance!
php - 初始创建后无法创建新的 ec2 实例
我有以下代码:
这在我第一次运行时没有任何问题。初次运行后,我从 EC2 控制台终止了该实例。现在每次尝试创建新实例时都会出现以下错误。
A resource entered into an invalid state of "terminated" while waiting with the "InstanceRunning" waiter.
我不明白为什么服务员正在查看旧的实例 ID,这是否以某种方式持续存在?
我还有什么需要补充的吗?
php - 使用 AWS PHP 开发工具包将文件安全传输到 S3
默认情况下,使用 AWS PHP 开发工具包将文件传输到 S3 是否可以防止窃听攻击,如果不是,我需要做什么才能做到这一点?