尝试使用 copyObject 命令 (AWS S3) 时出现以下错误。我使用的是 AWS PHP SDK,代码如下:
$this->client->copyObject(array(
'Bucket' => 'lms-courses',
'Key' => 'ideasfile.zip',
'CopySource' => "lms-courses/lalala.zip",
));
Run Code Online (Sandbox Code Playgroud)
在“ https://s3-us-west-2.amazonaws.com/lms-courses/ideasfile.zip ”上执行“CopyObject”时出错;AWS HTTP 错误:客户端错误:
PUT https://s3-us-west-2.amazonaws.com/lms-courses/ideasfile.zip导致404 Not Found响应:NoSuchKey指定的密钥不存在。lalala.zipE698888(截断...) NoSuchKey(客户端):指定的密钥不存在。-NoSuchKey指定的密钥不存在。lalala.zipE698888912B810F7DfHtqN5Hls4hGdTGY/pVv36XZPzoM4mJ5fAdhJjEjDufNUArvKCrqN27SjiG06u5hnC8G8yPdzA=
一段时间以来,我一直在为这个错误而苦苦挣扎。存储桶lms-courses存在, 也存在ideasfile.zip。我什至手动将该文件添加到存储桶中,只是为了以这种方式对其进行测试 - 以防它没有正确上传或其他原因。
我不明白为什么它说密钥不存在,当它显然存在时 - 我正在查看它。
我需要使用 C# AWS SDK 识别当前 EC2 实例的 VpcId。我已经尝试这样做了几个小时,但没有真正的运气。
我目前的做法是这样的,
var currentInstanceId = Amazon.EC2.Util.EC2Metadata.InstanceId; // Get Current Instance Id
AWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
var ec2Client = AWSClientFactory.CreateAmazonEC2Client(creds, clientRegionEndpoint);
var instances = ec2Client.DescribeInstances();
foreach (var reservation in instances.Reservations)
{
foreach (var instance in reservation.Instances)
{
if (instance.InstanceId.Equals(currentInstanceId)) // Compare Instance Id with all available instances
return instance.VpcId;
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得应该有一种更简单的方法来做到这一点。对此的任何帮助将不胜感激。
更新:
在@jbird 的帮助下,我能够使用以下方法实现这一目标,
Amazon.EC2.Util.EC2Metadata.NetworkInterfaces.First().VpcId
Run Code Online (Sandbox Code Playgroud) 有没有办法通过 URL 使用 java sdk 从 AWS S3 中删除资源?
我知道您可以使用存储桶名称和 keyName 删除资源,如下所示:
s3client.deleteObject(new DeleteObjectRequest(bucketName, keyName));
Run Code Online (Sandbox Code Playgroud)
问题是我只能访问资源 URL,因此我需要操作字符串来提取存储桶名称和键名。
但如果有一种方法可以通过传递 url 来删除,那就干净多了。
有必要定义
<add key="AWSRegion" value="us-east-1"/>
Run Code Online (Sandbox Code Playgroud)
App.config 中的应用程序设置以指定要使用的区域。
我需要以编程方式改变它
var creds = new BasicAWSCredentials(key, token);
using (var routes = AWSClientFactory.CreateAmazonRoute53Client(creds)){}
Run Code Online (Sandbox Code Playgroud)
如何在代码中指定区域?
使用 Java AWS SDK,我创建了一个 lambda 函数来从 s3 存储桶读取 csv 文件。我已将存储桶公开,并且可以从任何浏览器轻松访问它和文件。为了测试它,我使用 lambda 控制台上的测试按钮。我只是使用 hello world 测试配置输入模板。
它失败了:
错误消息:指定的存储桶无效。(服务:Amazon S3;状态代码:400;错误代码:InvalidBucketName;请求 ID:XXXXXXXXXXXXXXX)
Lambda 函数和 s3 存储桶位于同一区域 (us-east-1)。
我已将 AmazonS3FullAccess 添加到 lambda_basic_execution 角色。
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().build();
Run Code Online (Sandbox Code Playgroud)
也尝试过
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
Run Code Online (Sandbox Code Playgroud)
然后打电话
S3Object s3object = s3Client.getObject(new GetObjectRequest(
bucketName, keyName));
Run Code Online (Sandbox Code Playgroud)
存储桶名称是:
https://s3.amazonaws.com/<allAlphaLowerCaseBucketName>
Run Code Online (Sandbox Code Playgroud)
键名是:
<allAlphaLowerCaseKeyName>.csv
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
我正在尝试编写一个lambda函数,该函数会在将新映像写入S3存储桶时触发。触发器已经使用正确的S3存储桶进行了设置,因此我知道这不是问题。
lambda函数本身具有s3:GetObject和dynamodb。*角色(对于DynamoDB写操作应具有完全访问权限)。
这里的目标是简单地写一个我已经创建的名为'art'的表,并插入一个我试图从中获取的主键值(imageTitle)var imageName。然后,我想为该键分配一个属性,即存储在中的该图像的url var url。
这只是我要尝试的简单练习,因此我可以继续进行更复杂的数据库写入。但是到目前为止,art即使我向S3存储桶中添加了触发触发器的新对象,也没有将任何内容写入表中。lambda函数是否可能未部署?我直接在Lambda Console的内联编辑器中编写了它并保存了它。
这是代码:
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'us-east-1'});
const s3 = new AWS.S3();
exports.handler = async (event, context, callback) => {
//var sourceBucket = event.Records[0].s3.bucket.name;
var sourceKey = event.Records[0].s3.object.key;
var imageName = sourceKey.stringify;
//generate imageURL
var url = "https://s3.amazonaws.com/myapp-20181030214040-deployment/public/" + imageName;
var params = {
TableName : 'art',
Item: {
imageTitle: imageName,
imageURL: url
}
};
docClient.put(params, function(err, data) {
if (err) console.log(err);
else …Run Code Online (Sandbox Code Playgroud) 我有以下情况:
m4.large运行 RHEL6我有一个 Lambda 函数,用于记录 VPC 上的所有 EC2 状态更改,如下所示:
'use strict';
exports.handler = (event, context, callback) => {
console.log('LogEC2InstanceStateChange');
console.log('Received event:', JSON.stringify(event, null, 2));
callback(null, 'Finished');
}
Run Code Online (Sandbox Code Playgroud)
还有另一个 Lambda 函数,尝试根据计划启动 EC2 实例,用 Java 编写,代码量很大,但其核心是这样的:
public void handleRequest(Object input, Context context) {
final List<String> instancesToStart = getInstancesToStart(); //implementation not shown
try {
StartInstancesRequest startRequest = new StartInstancesRequest().withInstanceIds((String[]) instancesToStart.toArray());
context.logger.log("StartInstancesRequest: " + startRequest.toString());
StartInstancesResult res …Run Code Online (Sandbox Code Playgroud) 我是 DynamoDB 的新手,我只是创建了一个表,在其中插入了一些虚拟行来测试读/写功能。
这是我的数据。
我创建了一个 Lambda 来访问这些数据,通过 Partition Key ok Sort Key 但我每次都以空返回结束:'(
这是我的 lambda 代码:
const dynamodb = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10', region: 'eu-west-1'});
exports.handler = async (event,context,callback) => {
var params = {
TableName : "DontMissAPlaceTable",
KeyConditionExpression: "Partition_Key = :id",
ExpressionAttributeValues: {
":id": {"S" : "media_001"}
}
};
dynamodb.query(params, function(err, data) {
if (err) {
console.log(err, err.stack);
callback(null, {
statusCode: '500',
body: err
});
} else {
console.log(data)
callback(null, {
statusCode: '200',
body: data
});
}
})
};
Run Code Online (Sandbox Code Playgroud)
我一开始以为是无法访问该表,但似乎我拥有正确的权限。 …
AmazonS3Client已被弃用,取而代之的是AmazonS3ClientBuilder。AmazonS3Client 构造函数接受 AWSCredentials 实例,客户端可以通过该实例传递 AWS 访问和密钥。
AWSCredentials credentialsProvider = ... ;
AmazonS3Client amazonS3Client = new AmazonS3Client(credentialsProvider.getCredentials());
Run Code Online (Sandbox Code Playgroud)
使用 AmazonS3ClientBuilder 时,使用必要的 AWS 凭证实例化 AmazonS3 客户端的首选方法是什么?
我最近才接触AWS SDK,因此如果我的方法完全是胡说八道,请原谅。
我想将一个简单的媒体文件上传到我的 S3。我正在遵循本教程,到目前为止我可以毫无问题地上传文件。对于用户性来说,进度条将是一个很好的额外功能,因此我正在研究如何实现这一点。我很快发现当前的 AWS SDK v3不再支持httpUploadProgress,但我们应该使用@aws-sdk/lib-storage。使用这个库,我仍然可以将文件上传到 S3,但我无法让进度跟踪器工作!我认为这与我没有完全理解如何async在 React 组件中进行处理有关。
这是我的缩小组件示例(我在这里使用 Chakra UI)
const TestAWS: React.FC = () => {
const inputRef = useRef<HTMLInputElement | null>(null);
const [progr, setProgr] = useState<number>();
const region = "eu-west-1";
const bucketname = "upload-test";
const handleClick = async () => {
inputRef.current?.click();
};
const handleChange = (e: any) => {
console.log('Start file upload');
const file = e.target.files[0];
const target = { …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 AWS Swift SDK 中的 putObject 方法将图像上传到 S3 存储桶。我已按照此处的说明进行操作:https://docs.aws.amazon.com/sdk-for-swift/latest/developer-guide/examples-s3-objects.html
我可以将字符串添加到 s3 存储桶,但不知道如何添加图像。我尝试将图像转换为 jpegdata 和 pngdata,但无济于事。
这是我的代码:
// AWS S3 image upload
func uploadFile(withImage image: UIImage) {
let s3Client = try? S3Client(region: "us-west-2")
let bucketName = "xxxxx"
let imageData = image.pngData()
guard let dataToUpload = "Text to upload working".data(using: .utf8) else {
return
}
let body = ByteStream.from(data: imageData!)
s3Client!.putObject(input: PutObjectInput(body: body, bucket: bucketName, contentType: "image/png", key: "Test")) { result in
switch(result) {
case .success(let response):
if let eTag = …Run Code Online (Sandbox Code Playgroud)我对 Lambda 和 Node.JS 都很陌生。我本来想用 Python 编写这个函数,但老板说他喜欢用 Node 编写。我正在编写一个 AWS Lambda 函数来在一天结束时关闭指定的 EC2 实例。我无法检查describeInstances 是否正在获取正确的数据。
现在代码显示返回String(instances);,但我尝试了许多不同的操作,例如return instances.response.data;在尝试对数据或其他内容进行字符串化时出现错误。
var AWS = require('aws-sdk');
var ec2 = new AWS.EC2();
AWS.config.update({region: 'us-west-2'});
exports.handler = async (event) => {
var params = {
Filters: [
{
Name: "tag:Parking",
Values: [
"true"
]
}
]
};
var instances = ec2.describeInstances(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else return data; // successful response
});
//return Object.getOwnPropertyNames(instances);
//return instances.response.httpResponse; …Run Code Online (Sandbox Code Playgroud) aws-sdk ×12
amazon-s3 ×6
aws-lambda ×4
java ×3
c# ×2
.net ×1
amazon-ec2 ×1
asp.net-core ×1
aws-php-sdk ×1
ios ×1
javascript ×1
node.js ×1
php ×1
reactjs ×1
swift ×1