【AWS系列】第八讲:AWS Serverless之S3

这篇具有很好参考价值的文章主要介绍了【AWS系列】第八讲:AWS Serverless之S3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

aws s3,AWS系列,aws,serverless,云计算,S3

目录

序言

1.基础介绍

1.1 概念介绍

1.2 原理介绍

1.3 应用场景

1.3.1 构建数据湖

1.3.2 备份和还原关键数据

1.3.3 以最低成本存档数据

1.3.4 运行云原生应用程序

1.4 S3 的功能

1.4.1 存储类

1.4.2 存储管理

1.4.3 访问管理

2 使用方法

2.1 创建存储桶

​2.2 配置 CORS 规则

3 投票


序言

三言两语,不如细心探索

希望读完此文,能帮助读者对AWS S3 有一个初步的了解

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

1.基础介绍

1.1 概念介绍

Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务

特点:

  • 行业领先
  • 可扩展性
  • 数据可用性
  • 安全性
  • 性能高

其具有高成本效益的存储类易于使用的管理功能

可以优化成本、组织数据并配置精细调整过的访问控制,从而满足特定的业务、组织和合规性要求。

1.2 原理介绍

aws s3,AWS系列,aws,serverless,云计算,S3

Amazon S3 是一种数据元存储服务,可将数据以对象形式存储在存储桶中。对象指的是一个文件和描述该文件的任何元数据。存储桶是对象的容器。

要将数据存储在 Amazon S3 中,

  1. 需要先创建存储桶,
  2. 指定存储桶名称和 AWS 区域。
  3. 将数据作为 Amazon S3 中的数据元上传到该存储桶。

每个对象都带有密钥(或键名称,它是存储桶中对象的唯一标识符

1.3 应用场景

S3除了用于对象存储,还可以做一下场景:

  • 数据湖
  • 网站
  • 移动应用程序
  • 备份和恢复
  • 归档
  • 企业应用程序
  • IoT 设备和大数据分析

1.3.1 构建数据湖

运行大数据分析、人工智能 (AI)、机器学习 (ML) 和高性能计算 (HPC) 应用程序来获得数据见解。

数据湖基础:Amazon S3、AWS Lake Formation、Amazon Athena、Amazon EMR 和 AWS Glue

使用在 Amazon S3 上构建的数据湖,可以使用原生 AWS 服务运行大数据分析、人工智能(AI)、机器学习、高性能计算(HPC)和媒体数据处理应用程序,以便从非结构化数据集中获得洞察信息。

与 AWS Lake Formation 和 AWS Glue 结合使用时,可以通过端到端数据集成和集中的、类似数据库的权限和治理来轻松简化数据湖的创建和管理。Glue、Amazon EMR 和 Amazon Athena 等 AWS 分析解决方案可让您轻松直接查询数据湖。

1.3.2 备份和还原关键数据

通过 S3 强大的复制功能达到恢复时间目标 (RTO)、恢复点目标 (RPO) 以及符合合规要求。

优势

  • 数据持久性
  • 灵活性和可扩展性
  • 成本效益
  • 适合所有数据类型的备份
  • 安全性与合规性
  • 数据传输方法

1.3.3 以最低成本存档数据

将数据存档移动到 Amazon S3 Glacier 存储类以降低成本、消除运营复杂性并获得新见解。

优势:

  • 检索速度快至毫秒
  • 无与伦比的持久性和可扩展性
  • 最全面的安全与合规性功能
  • 最低成本
  • 在整个数据生命周期中保持一致

1.3.4 运行云原生应用程序

构建快速、功能强大的移动和基于 Web 的云原生应用程序,可在高度可用的配置中自动扩展。

云原生应用程序实现功能的速度更快,因为微服务在准备就绪时提供其功能,而无需等待单片应用程序完成。Amazon S3为IT团队交付的内部员工应用程序和产品团队交付的外部客户应用程序提供即时、弹性的容量。

1.4 S3 的功能

功能分为以下几个模块

存储类

1.4.1 存储类

Amazon S3 提供一系列适合不同使用案例的存储类。

使用方法:

频繁访问存储在:

  • S3 Standard

不经常访问,存储在:

  • S3 Standard-IA
  •  S3 One Zone-IA

成本归档,存储在:

  • S3 Glacier Instant Retrieval
  • S3 Glacier Flexible Retrieval
  • S3 Glacier Deep Archive

不断变化或未知访问模式的数据:

  • S3 Intelligent-Tiering

这四个访问层包括两个低延迟访问层(针对频繁和不频繁访问进行了优化),以及两个为异步访问很少访问的数据而设计的 opt-in archive 访问层。

1.4.2 存储管理

Amazon S3 具有存储管理功能,可以使用这些功能来管理成本、满足法规要求、减少延迟并保存数据的多个不同副本以满足合规性要求。

  • 生命周期: 配置生命周期策略以管理对象,并在其整个生命周期内经济高效地存储。您可以将对象转换为其他 S3 存储类,也可以使其生命周期结束的对象过期。

  • ​对象锁定:可以在固定的时间段内或无限期地阻止删除或覆盖 Amazon S3 对象。可以使用对象锁定来满足需要一次写入多次读取 (WORM) 存储的法规要求,或只是添加另一个保护层来防止对象被更改和删除。

  • 复制: 将对象及其各自的元数据和对象标签复制到同一或不同的 AWS 区域 目标存储桶中的一个或多个目标存储桶,以减少延迟、合规性、安全性和其他使用案例。

  •  分批操作:通过单个 S3 API 请求或在 Amazon S3 控制台中单击几次,大规模管理数十亿个对象。可以使用分批操作来执行诸如复制调用 AWS Lambda 函数, 和恢复数百万或数十亿对象。

1.4.3 访问管理

Amazon S3 提供了用于审核和管理对存储桶和数据元的访问的功能。默认情况下,S3 存储桶和对象都是私有的

用户只能访问自己创建的 S3 资源。

如果需要授予支持特定使用案例的细粒度资源权限或审核 Amazon S3 资源的权限,可以使用以下功能。

  • 阻止共有访问:阻止对 S3 存储桶和对象的公有访问。默认情况下,在账户和存储桶级别打开 “阻止公共访问” 设置。

  • AWS Identity and Access Management (IAM):为 AWS 账户 管理对 Amazon S3 资源的访问。例如,可以将 IAM 用于 Amazon S3,控制用户或用户组对您的 AWS 账户 所拥有 S3 存储桶的访问类型。

  • 存储桶策略:使用基于 IAM 的策略语言为 S3 存储桶及其中的对象配置基于资源的权限。

  •  Amazon S3 访问点:使用专用访问策略配置命名网络终端节点,以便大规模管理对 Amazon S3 中共享数据集的访问。

  • 访问控制列表 (ACL) :向授权用户授予单个存储桶和对象的读写权限。作为一般规则,建议使用基于 S3 资源的策略(存储桶策略和访问点策略)或 IAM 策略进行访问控制,而不是 ACL。ACL 是一种访问控制机制,早于基于资源的策略和 IAM。

  • (S3 对象所有权): 禁用 ACL 并获取存储桶中每个对象的所有权,从而简化了对存储在 Amazon S3 中的数据的访问管理。作为存储桶所有者,会自动拥有并完全控制桶中的每个对象,并且数据的访问控制是基于策略而进行。

  • S3 访问分析器:评估和监控S3 存储桶访问策略,确保这些策略仅提供对 S3 资源的预期访问。

2 使用方法

2.1 创建存储桶

先找到S3

aws s3,AWS系列,aws,serverless,云计算,S3

 进入S3控制台,点击创建存储桶

aws s3,AWS系列,aws,serverless,云计算,S3

根据业务,设置不同的参数 然后点击创建,即可创建一个简单的存储桶

 aws s3,AWS系列,aws,serverless,云计算,S3

 2.2 配置 CORS 规则

 以下代码示例显示如何向 S3 桶添加跨源资源共享 (CORS) 规则。示例为Java

其他的学习。可以查阅github

aws s3 examplea文章来源地址https://www.toymoban.com/news/detail-779058.html

    public static void deleteBucketCorsInformation(S3Client s3, String bucketName, String accountId) {
        try {
            DeleteBucketCorsRequest bucketCorsRequest = DeleteBucketCorsRequest.builder()
                .bucket(bucketName)
                .expectedBucketOwner(accountId)
                .build();

            s3.deleteBucketCors(bucketCorsRequest) ;

        } catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    public static void getBucketCorsInformation(S3Client s3, String bucketName, String accountId) {

        try {
            GetBucketCorsRequest bucketCorsRequest = GetBucketCorsRequest.builder()
                .bucket(bucketName)
                .expectedBucketOwner(accountId)
                .build();

            GetBucketCorsResponse corsResponse = s3.getBucketCors(bucketCorsRequest);
            List<CORSRule> corsRules = corsResponse.corsRules();
            for (CORSRule rule: corsRules) {
                System.out.println("allowOrigins: "+rule.allowedOrigins());
                System.out.println("AllowedMethod: "+rule.allowedMethods());
            }

        } catch (S3Exception e) {

            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    public static void setCorsInformation(S3Client s3, String bucketName, String accountId) {

        List<String> allowMethods = new ArrayList<>();
        allowMethods.add("PUT");
        allowMethods.add("POST");
        allowMethods.add("DELETE");

        List<String> allowOrigins = new ArrayList<>();
        allowOrigins.add("http://example.com");
        try {
            // Define CORS rules.
            CORSRule corsRule = CORSRule.builder()
                .allowedMethods(allowMethods)
                .allowedOrigins(allowOrigins)
                .build();

            List<CORSRule> corsRules = new ArrayList<>();
            corsRules.add(corsRule);
            CORSConfiguration configuration = CORSConfiguration.builder()
                .corsRules(corsRules)
                .build();

            PutBucketCorsRequest putBucketCorsRequest = PutBucketCorsRequest.builder()
                .bucket(bucketName)
                .corsConfiguration(configuration)
                .expectedBucketOwner(accountId)
                .build();

            s3.putBucketCors(putBucketCorsRequest);

        } catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

3 投票

到了这里,关于【AWS系列】第八讲:AWS Serverless之S3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • php对接AWS S3云存储,上传S3及访问权限问题

    首先先下载sdk包 https://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/getting-started_installation.html S3创建存储桶 去安全凭证-》创建访问秘钥 创建的时候会提示,主账号创建不安全,这个时候我们需要创建一个IAM账号来创建秘钥 创建的步骤访问这个链接 https://www.codenong.com/a513c91ea

    2024年02月10日
    浏览(40)
  • aws的s3匿名公开访问

    “Resource”: “arn:aws:s3:::bucketname/*”

    2024年02月11日
    浏览(41)
  • python botos s3 aws

    https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html AWS是亚马逊的云服务,其提供了非常丰富的套件,以及支持多种语言的SDK/API。 本文针对其S3云储存服务的Python SDK(boto3)的使用进行介绍。 :AWS,S3,Python,boto3,endpoint,client AWS是一整套亚马逊云服务套

    2024年04月15日
    浏览(36)
  • Java AWS S3 文件上传实现

    Amazon S3(Simple Storage Service)是亚马逊云计算平台提供的一种对象存储服务,可以用于存储和检索任意类型的数据。在Java开发中,我们可以通过AWS SDK for Java来实现与Amazon S3的集成。 官方文档 https://docs.aws.amazon.com/zh_cn/sdk-for-java/v1/developer-guide/examples-s3.html 1. 配置maven依赖 2. 配置

    2024年02月21日
    浏览(44)
  • AWS第一个云计算服务—S3

    传统方式处理静态内容(图片、视频、CSS、纯HTML页面等)是将其放到磁盘里,随着访问量增大,磁盘压力就会增大,磁盘压力大可能就会坏掉,所以我们需要一个 海量、高并发、可靠的存储 ,这就是 AWS提供的第一个云计算服务——S3 。 S3(Simple Storage Service)是一个存储服

    2024年02月11日
    浏览(54)
  • Laravel对接 AWS S3 完整流程

    重要的三个参数 1、创建存储桶 2、开启权限 3、编辑存储桶策略 4、使用策略生成器生成json策略 显示公开访问 控制台随便上传一个文件后查看属性复制 AWS_ENDPOINT 即对象URI的域名字段 5、创建IAM用户、添加用户组权限 创建用户成功后进入用户详情 创建访问密钥 至此三个参数

    2024年02月12日
    浏览(42)
  • AWS——03篇(AWS之Amazon S3(云中可扩展存储)-01入门)

    关于AWS的其他入门,如下: AWS——01篇(AWS入门 以及 AWS之EC2实例及简单使用). AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储). 2.1.1 简述 Amazon S3:从任意位置存储和检索任意数量的数据 Amazon S3 是一项对象存储服务,可提供业界领先的可扩展

    2024年02月14日
    浏览(47)
  • 基于java的 aws s3文件上传

    aws s3 文件上传代码 首先,确保您已经在AWS上创建了一个S3存储桶,并拥有相应的访问密钥和密钥ID。这些凭据将用于在Java代码中进行身份验证。 接下来,需要在Java项目中添加AWS SDK的依赖。可以使用Maven或Gradle进行依赖管理。以下是一个Maven的示例依赖项: 示例代码: 在上述

    2024年01月17日
    浏览(43)
  • AWS S3 bucket 的 ACL 控制

    在新的 AWS S3 控制中,启用了一个默认的配置。 这个默认的配置能够阻止用户的访问。 首先需要对 Object 所有者进行修改。 在打开的界面中,选择 ACLs 启用。 然后选择选项。   然后单击保存。 随后,就可以对 ACL 进行编辑了。 通常可以通过这个配置来完成对参考的默认访问

    2024年02月13日
    浏览(37)
  • AWS 的S3 与 CloudFront 配合纪要

    1、S3 可以使用aws的sdk集合包,也可以使用S3专用的包:@aws-sdk/client-s3; 2、通过sdk上传的文件,不带自动设置 Content-Type 的逻辑(同样的情况发生在阿里云),所以这里的设置应该属于前端web代码。sdk就不带了,所以要自备mime表; 3、CloudFront 会根据源站的 Content-Type 自动应用

    2024年01月18日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包