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版本。