AWS 杂记

API gateway 使用计划

  • 什么是使用计划
    • 使用计划允许访问一个或多个已部署的 API 阶段,这些阶段对各个客户端 API 密钥实施可配置的限制和配额限制。
    • API 调用方通过可由 API Gateway 生成或从外部来源导入的 API 密钥进行标识。
    • 注意:
      • 限制和配额限制适用于跨一个使用计划内的所有 API 阶段聚合的各个 API 密钥的请求。
  • 配置使用计划

    • 1.创建一个或多个 API,将方法配置为需要 API 密钥,并在各阶段部署 API。

    • 2.使用您的 API 生成 API 密钥并将密钥分发给应用程序开发人员 (您的客户)。

    • 3.创建具有所需限制和配额限制的使用计划。

    • 4.选定 API 阶段和 API 密钥与使用计划进行关联。


JS 链接 AWS

  • 您可以通过使用以下方式将凭据信息传递给配置对象来硬编码凭据AWS.config.update():
AWS.config.update({accessKeyId: 'akid', secretAccessKey: 'secret'});
  • 为Amazon S3 Bucket配置CORS
    • 一个快速的CORS配置示例如下所示。此示例允许用户从任何外部域中查看,添加,删除或更新存储桶内的对象,但建议将“AllowedOrigin”范围放置到您的网站运行的域中(您可以指定“*”允许任何来源)。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <CORSRule>
    <AllowedOrigin>https://example.org</AllowedOrigin>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    <ExposeHeader>ETag</ExposeHeader>
    <ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
  </CORSRule>
</CORSConfiguration>

JS S3上传文件配置详解

  • 向S3发送请求
var s3 = new AWS.S3();
s3.abortMultipartUpload(params, function (err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});
  • 锁定API版本
    • 为了确保S3对象使用这个特定的API,可以通过将apiVersion选项传递给构造函数来构造对象:
var s3 = new AWS.S3({apiVersion: '2006-03-01'});

/*
//您还可以AWS.config.apiVersions使用s3服务标识符全局设置API版本:
AWS.config.apiVersions = {
  s3: '2006-03-01',
  // other service API versions
};
var s3 = new AWS.S3();
*/
  • 构造方法
    • new AWS.S3(options = {})
    • eg:
var s3 = new AWS.S3({
        apiVersion: '2006-03-01',
        params: {Bucket: albumBucketName}
    });

  • 上传方法:upload()
    • (AWS.S3.ManagedUpload) upload(params = {}, [options], [callback])
    • 如果有效载荷足够大,可以使用智能并发处理部件来上传任意大小的缓冲区,blob或流。您可以通过设置配置并发队列大小options。请注意,这是SDK可以使用流体重试请求的唯一操作。
    • 例子:
  • 上传流对象
var params = {Bucket: 'bucket', Key: 'key', Body: stream};
s3.upload(params, function(err, data) {
  console.log(err, data);
});
  • 上传一个并发度为1和partSize为10mb的数据流
var params = {Bucket: 'bucket', Key: 'key', Body: stream};
var options = {partSize: 10 * 1024 * 1024, queueSize: 1};
s3.upload(params, options, function(err, data) {
  console.log(err, data);
});
参数:
  • ACL- (String)应用于对象的可以使用的ACL。可能的值包括:
    • ”private”
    • “public-read”
    • “public-read-write”
    • “authenticated-read”
    • “aws-exec-read”
    • “bucket-owner-read”
    • “bucket-owner-full-control”
  • Body- (Buffer, Typed Array, Blob, String, ReadableStream)对象数据。
  • Bucket- (String)启动PUT操作的桶的名称。
  • CacheControl- (String)指定请求/回复链中的缓存行为。
  • ContentDisposition- (String)指定对象的表示信息。
  • ContentEncoding — (String) Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.
  • ContentLanguage- (String)内容所在的语言。
  • ContentLength- (Integer)身体的大小(以字节为单位)当不能自动确定身体的大小时,此参数很有用。
  • ContentMD5- (String)部分数据的base64编码的128位MD5摘要。
  • ContentType- (String)描述对象数据格式的标准MIME类型。
  • Expires- (Date)对象不再可缓存的日期和时间。
  • GrantFullControl- (String)给对象的被授权者READ,READ_ACP和WRITE_ACP权限。
  • GrantRead- (String)允许受让人读取对象数据及其元数据。
  • GrantReadACP- (String)允许受让人读取对象ACL。
  • GrantWriteACP- (String)允许受让人编写适用对象的ACL。
  • Key- (String)启动PUT操作的对象键。
  • Metadata- (map)在S3中存储与对象的元数据的映射。
  • ServerSideEncryption- (String)在S3中存储此对象时使用的服务器端加密算法(例如,AES256,aws:kms)。可能的值包括:
    • ”AES256”
    • “aws:kms”
  • StorageClass- (String)用于对象的存储类型。默认为“标准”。可能的值包括:
    • ”STANDARD”
    • “REDUCED_REDUNDANCY”
    • “STANDARD_IA”
  • WebsiteRedirectLocation- (String)如果桶被配置为网站,则将该对象的请求重定向到同一个桶中的另一个对象或外部URL。Amazon S3将此头部的值存储在对象元数据中。
  • SSECustomerAlgorithm- (String)指定加密对象时使用的算法(例如,AES256)。
  • SSECustomerKey- (Buffer, Typed Array, Blob, String)指定用于Amazon S3加密数据的客户提供的加密密钥。该值用于存储对象,然后被丢弃; 亚马逊不存储加密密钥。密钥必须适合与x-amz-server-side -encryption-customer-algorithm头中指定的算法一起使用。
  • SSECustomerKeyMD5- (String)根据RFC 1321指定加密密钥的128位MD5摘要.Mas S3使用此标头进行消息完整性检查,以确保加密密钥无错误地传输。
  • SSEKMSKeyId- (String)指定用于对象加密的AWS KMS密钥ID。由AWS KMS保护的对象的所有GET和PUT请求都将失败,如果不是通过SSL或使用SigV4
返回:
  • (AWS。S3。ManagedUpload) - 可以调用send()或跟踪进度的托管上传对象 。
(AWS.S3.ManagedUpload) — the managed upload object that can call send() or track progress.
回调函数:
function(err, data) { ... }
  • Parameters:
    • err (Error) — 一个错误,如果没有发生错误则为null。
    • data (map) — The response data from the successful upload: * Location (String) the URL of the uploaded object * ETag (String) the ETag of the uploaded object * Bucket (String) the bucket to which the object was uploaded * Key (String) the key to which the object was uploaded//成功上传的响应数据:* Location(String)上传对象的URL * (String)上传对象ETag的ETag * Bucket(String)上传对象的存储桶* Key(String)对象的对象已上传

案例分享:

/**
 * 文件上传
 * @param albumName
 */
function addFile(albumName) {
    var albumBucketName = '**********';
    var bucketRegion = 'us-east-1';
    var IdentityPoolId = '********************';//用户池编号

    AWS.config.update({
        region: bucketRegion,
        credentials: new AWS.CognitoIdentityCredentials({
            IdentityPoolId: IdentityPoolId
        })
    });

    var s3 = new AWS.S3({
        apiVersion: '2006-03-01',
        params: {Bucket: albumBucketName}
    });
    var files = document.getElementById('file1').files;
    if (!files.length) {
        return alert('Please choose a file to upload first.');
    }

    var file = files[0];
    var fileName = file.name;
    alert(fileName);
    var albumPhotosKey = encodeURIComponent(albumName) + '/';
    alert(albumPhotosKey);
    var photoKey = albumPhotosKey + fileName;
    s3.upload({
        Key: photoKey,
        Body: file,
        ACL: 'public-read'
    }, function (err, data) {
        if (err) {
            return alert('There was an error uploading your photo: ', err.message);
        }
        alert('Successfully uploaded photo.');
    });
}

使用SDK Builder构建SDK的SDK

  • 创建自己构建的AWS SDK for JavaScript的最简单的方法是使用SDK Builder Web应用程序https://sdk.amazonaws.com/builder/js。使用SDK构建器指定要包含在构建中的服务及其API版本。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值