我需要从s3存储桶中递归下载文件.s3存储桶允许匿名访问.
如何在不使用匿名用户提供AWS Access Key的情况下列出文件并下载它们?
我的命令是:
aws s3 cp s3://anonymous@big-data-benchmark/pavlo/text/tiny/rankings/uservisits uservisit --region us-east --recursive
Run Code Online (Sandbox Code Playgroud)
aws表示:
Unable to locate credentials. You can configure credentials by running "aws 配置"
我正在尝试访问一个简单的AWS IOT REST服务,但我还没有成功.这就是我做的.
试图"获取"端点,这就是我得到的 -
{
"message": "Credential should be scoped to correct service. ",
"traceId": "be056198-d202-455f-ab85-805defd1260d"
}
我认为邮递员有问题,所以我尝试使用连接到S3的aws-sdk-sample示例并将其更改为连接到IOT URL.这是我的程序片段(Java)
String awsAccessKey = "fasfasfasdfsdafs";
String awsSecretKey = "asdfasdfasfasdfasdfasdf/asdfsdafsd/fsdafasdf";
URL endpointUrl = null;
String regionName = "us-east-1";
try {
endpointUrl = new URL("https://dasfsdfasdf.iot.us-east-1.amazonaws.com/things/SOMETHING/shadow");
}catch (Exception e){
e.printStackTrace();
}
Map<String, String> headers = new HashMap<String, String>();
headers.put("x-amz-content-sha256", AWSSignerBase.EMPTY_BODY_SHA256);
AWSSignerForAuthorizationHeader signer = new AWSSignerForAuthorizationHeader(
endpointUrl, "GET", "iot", regionName);
String authorization = signer.computeSignature(headers,
null, // no query parameters …Run Code Online (Sandbox Code Playgroud)我们有一个确定的工作人员正在运行,随着时间的推移,我们注意到"respondDecisionTaskCompleted"调用的响应时间越来越慢,我们尝试使用相同的SWF客户端实例以及在每次调用时创建客户端的新实例,但仍然会遇到相同的行为,有时响应时间最长可达3至5分钟.
我们预计会出现某种泄漏,因为当我们重新部署时,响应时间变得非常快,然后在几百次调用后降级.
我们正在使用javascript AWS SDK.
关于我们应该在哪里研究的任何建议?
谢谢,
似乎无法调用通过CloudFront分配启用AWS_IAM保护的REST API.
以下是如何重现这个:
现在使用经过身份验证的用户(我使用Cognito UserPool用户和aws-amplify)来调用
我得到的错误是:
{"message":"我们计算的请求签名与您提供的签名不匹配.请检查您的AWS秘密访问密钥和签名方法.有关详细信息,请参阅服务文档."}
我无法相信AWS不支持自定义域后面的AWS_IAM受保护端点,因为这必须是一个非常常见的用例.
因此,请您提供一份如何实现这一目标的详细清单?
谢谢
amazon-cloudfront amazon-cognito aws-sdk aws-api-gateway aws-amplify
我已经编写了一个实现,用于为aws-s3上的存储桶生成预先签名的URL.它可以正常工作,用于获取单个文件/对象.
我如何为整个目录生成预先签名的URL?让我们这样说吧,在我的s3存储桶上,有多个文件夹都有自己的小html5应用程序.每个文件夹都有自己的一组html,css,js以及媒体文件.在这种情况下,我不会为单个对象生成预先签名的URL.
如果我为单个文件提供预先签名的URL,例如:文件夹的index.html,该文件也需要加载css,js和media文件.我们没有签名网址的文件.
我不太确定如何实施这个.
我在本地设置一个dynamodb来测试我的Node应用程序.要设置它,我只需要从这里复制代码并根据我的需要进行调整.
这是代码:
var AWS = require("aws-sdk");
var config = ({
"apiVersion": "2012-08-10",
"accessKeyId": "abcde",
"secretAccessKey": "abcde",
"region": "us-west-2",
"endpoint": "http://localhost:8001",
});
var dynamodb = new AWS.DynamoDB(config);
var params = {
TableName : "Movies",
KeySchema: [
{ AttributeName: "year", KeyType: "HASH"}, //Partition key
{ AttributeName: "title", KeyType: "RANGE" } //Sort key
],
AttributeDefinitions: [
{ AttributeName: "year", AttributeType: "N" },
{ AttributeName: "title", AttributeType: "S" }
],
ProvisionedThroughput: {
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
}
};
dynamodb.createTable(params, function(err, data) { …Run Code Online (Sandbox Code Playgroud) javascript amazon-web-services node.js amazon-dynamodb aws-sdk
我正在通过节点SDK从AWS发送短信.短信很顺利,我正在尝试获取交付信息.显然它不是那么容易,需要设置SNS将日志发送到Cloudwatch并解析CloudWatch以获取查询MessageId的交付信息:https://stackoverflow.com/a/40327061/2054629
如果我通过SNS Web界面发送短信,日志我会看到cloudwatch中的日志,但是当我通过节点SDK发送它们时.在从节点发送之前,我无法获得有关如何设置内容的信息.
理想情况下,我希望实现以下目标:
const sendSMS = async (message, number) => {
// send the SMS
// wait to get delivery info
// resolve with delivery info, or reject if failed
}
Run Code Online (Sandbox Code Playgroud)
目前我有:
import AWS from 'aws-sdk';
AWS.config.update({
accessKeyId: accessKey,
secretAccessKey: secretKey,
region: 'us-east-1',
});
const sns = new AWS.SNS();
const sendSMS = async (message, number) => {
return await new Promise((resolve, reject) => {
sns.publish({
Message: message,
MessageStructure: 'string',
PhoneNumber: number,
}, (err, res) => {
if …Run Code Online (Sandbox Code Playgroud) 我对使用AWS策略生成器创建的S3存储桶具有以下策略,以允许以特定角色运行的lambda访问存储桶中的文件.但是,当我执行Lambda时,我获得403权限被拒绝:
"errorMessage": "Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: <requestId>)",
"errorType": "com.amazonaws.services.s3.model.AmazonS3Exception",
Run Code Online (Sandbox Code Playgroud)
S3存储桶的策略:
{
"Version": "2012-10-17",
"Id": "Policy<number>",
"Statement": [
{
"Sid": "Stmt<number>",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<account>:role/<roleName>"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::<bucketName>/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这个政策有什么问题?Lamba正在使用策略中配置的角色运行.
这是我得到的警告:
S3AbortableInputStream:并非所有字节都从S3ObjectInputStream中读取,从而中止HTTP连接.这可能是错误,可能导致次优行为.通过范围GET仅请求您需要的字节或在使用后消耗输入流.
我尝试使用try with resources但是S3ObjectInputStream似乎没有通过此方法关闭.
try (S3Object s3object = s3Client.getObject(new GetObjectRequest(bucket, key));
S3ObjectInputStream s3ObjectInputStream = s3object.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(s3ObjectInputStream, StandardCharsets.UTF_8));
){
//some code here blah blah blah
}
Run Code Online (Sandbox Code Playgroud)
我也试过下面的代码并明确关闭,但这也不起作用:
S3Object s3object = s3Client.getObject(new GetObjectRequest(bucket, key));
S3ObjectInputStream s3ObjectInputStream = s3object.getObjectContent();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(s3ObjectInputStream, StandardCharsets.UTF_8));
){
//some code here blah blah
s3ObjectInputStream.close();
s3object.close();
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
PS:我只从S3读取两行文件,文件中有更多数据.
现在,我正在努力了解AWS Cognito所以也许有人可以帮助我.我设置了一个域来为我的用户池提供Cognito的托管UI,就像这里描述的那样.因此,当我访问时,https://<my-domain>.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=<MY_POOL_CLIENT_ID>&redirect_uri=https://localhost:8080我会看到一个登录页面,我的用户可以通过Google登录我的应用程序.那部分工作得很好.
我很困惑在用户登录后如何处理从该页面返回的代码.因此,一旦我被重定向到Google并授权应用程序查看我的信息,我将被重定向回我的一个URL并带有代码查询参数.现在我正在重定向到localhost,因此重定向URL如下所示:
https://localhost:8080/?code=XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX
这段代码究竟是什么?另外,如何使用它来为我的用户访问AWS资源?
javascript amazon-web-services amazon-cognito aws-sdk aws-cognito
aws-sdk ×10
amazon-s3 ×4
javascript ×3
node.js ×2
amazon-sns ×1
aws-amplify ×1
aws-cognito ×1
aws-iot ×1
aws-java-sdk ×1
aws-lambda ×1
flash ×1
iot ×1
sms ×1