国内使用亚马逊S3一些注意事项

亚马逊S3的使用 一、下载s3browser客户端 1、进入下载页面进行下载 下载亚马逊S3客户端地址 2、使用客户端进行连接公司亚马逊服务 连接成功之后的界面如下: 可以一目了然的看到上传之后的文件和文件目录存储结构。 二、亚马逊AmazonS3的使用 1、引入pom依赖 <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</ar.. 阅读详情
AI摘要

文章介绍了如何在亚马逊云服务平台上使用S3服务,包括创建存储桶、设置权限、免费额度的使用以及公开和非公开桶的区别。对于公开桶,需要编辑存储桶策略以允许公网访问。在中国区,必须进行ICP备案。此外,文章提供了Java代码示例,展示预签名上传文件、获取对象URL、删除对象等操作,以及使用临时凭证访问非公开桶的方法。作者指出,亚马逊的文档相比阿里云不够直观,使用体验有待提升。

一、亚马逊国内和海外是有区别的

新项目要使用亚马逊服务器,最近就在研究使用亚马逊的一些服务功能,亚马逊的文档看起来有点恶心,不像阿里这些,简单易懂。而且海外和国内是有区别的。记录一些使用心得。

二、这里主要讲S3的功能

先讲一些亚马逊平台上的功能把。国内亚马逊从账号申请下来开始算时间,有免费试用服务的,都可以试用,直接选中服务使用就行。但是是有免费额度的,额度根据你使用的服务官网写的一些限制内都是免费的。在右上角的菜单栏,可以查看免费额度使用情况。
在这里插入图片描述
在这里插入图片描述
控制台找到S3服务进入,看到如下页面,开始新建桶资源。

在这里插入图片描述
新建桶操作如下,填入桶名称:
在这里插入图片描述
开启是否阻止公网访问权限,打开后互联网不能直接访问。如下:
在这里插入图片描述
其他使用默认选择直接保存。根据你的是否阻止公网访问,显示如上图桶列表的情况,公开或者存储桶和对象不是公有的两种情况,这两种情况要根据你的实际使用来区分。下面区分两种情况的操作。

公开桶,如图片等网站直接需要访问的

在创建新的桶的时候,现在关闭阻止公网访问权限保存成功后。点击列表进入桶,如下进入权限栏:
在这里插入图片描述
选择编辑存储桶策略,添加该策略后,才能使这个桶下面的对象被查询到。如下:在这里插入图片描述

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "你自己的存储桶 ARN/*"
        }
    ]
}

然后,也是最重要的一点:亚马逊中国区,必须进行ICP 备案,申请开发80或443端口,否则是不能通过网址直接访问s3内部对象的。
如果你进行了完整备案后,那么恭喜你,你可以通过对象地址直接在浏览器访问该地址查看。在这里插入图片描述

代码操作桶内容

准备配置亚马逊秘钥
在这里插入图片描述
在这里插入图片描述下载秘钥文档使用秘钥配置进代码里面,直接上代码。maven对应的包

		<dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
            <version>1.12.292</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-sts</artifactId>
            <version>1.12.261</version>
        </dependency>
public class OssConfiguration {
    public static String accessKey;

    public static String secretKey;

    public static String region;
    @Bean
    public AmazonS3 amazonS3() {
        return AmazonS3ClientBuilder.standard()
                .withCredentials(
                        new AWSStaticCredentialsProvider(
                                new BasicAWSCredentials(OssConfiguration.accessKey, OssConfiguration.secretKey)))
                .withRegion(OssConfiguration.region)
                .build();
    }
}

实现方法类如下:我使用的都是文件上传比较常规的用法,前端请求后端接口生成上传地址,前端通过地址直接上传文件,并且在保存信息的时候带上文件地址调用其他接口发送给后端,接口自行定义书写,我这就没传了。

	@Resource
    private AmazonS3 client;
	 /**
     * 预签名上传文件
     *
     * @param bucket bucket
     * @param fileName 文件名
     * @return {String} url
     */
	@Override
    public String preUploadFile(String bucket, String fileName) {
        // token设置1小时后过期
        DateTime expiration = DateUtil.offsetHour(new Date(), 1);
        URL url = client.generatePresignedUrl(new GeneratePresignedUrlRequest(bucket, fileName).withExpiration(expiration).withMethod(HttpMethod.PUT));
        return url.toString();
    }
    /**
     * 查询文件访问路径
     * @param bucket    bucket name
     * @param objectKey object name
     * @return download url
     */
     @Override
    public URL getObjectUrl(String bucket, String objectKey) {
        if (client == null) {
            createClient();
        }
        return client.generatePresignedUrl(bucket, objectKey,
                new Date(System.currentTimeMillis() + OssConfiguration.expire * 1000), HttpMethod.GET);
    }
	/**
     * 删除对象
     * @param bucket
     * @param objectKey
     * @return
     */
    @Override
    public Boolean deleteObject(String bucket, String objectKey) {
        if (!client.doesObjectExist(bucket, objectKey)) {
            return true;
        }
        client.deleteObject(bucket, objectKey);
        return true;
    }
	/**
     * 获取对象流
     * @param bucket
     * @param objectKey
     * @return
     */
    @Override
    public InputStream getObject(String bucket, String objectKey) {
        return client.getObject(bucket, objectKey).getObjectContent().getDelegateStream();
    }
	/**
    * @ Description 后端上传文件
    * @ Param [bucket, objectKey, input]
    * @ return void
    **/
    @Override
    public void putObject(String bucket, String objectKey, InputStream input) {
        if (client.doesObjectExist(bucket, objectKey)) {
            throw new RuntimeException("The filename already exists.");
        }
        PutObjectResult objectResult = client.putObject(new PutObjectRequest(bucket, objectKey, input, new ObjectMetadata()));
        log.info("Upload File: {}", objectResult.toString());
    }

非公开桶

不共开的桶只需要创建好就是不共开的桶,不共开的桶只有一个访问不一样。访问的时候,有两种方式,一种生成预签名地址,在有效期内,预签名地址是可以访问文件的。

	@Override
    public String downloadPreSignatureUrl(String bucket, String key) {
        DateTime expiration = DateUtil.offsetDay(new Date(), 7);
        return client.generatePresignedUrl(new GeneratePresignedUrlRequest(bucket, key).withExpiration(expiration).withMethod(HttpMethod.GET)).toString();
    }

另一种方式比较麻烦,使用用户临时凭证生成s3客户端的方式访问。需要开启账号的sts权限。
在OssConfiguration配置文件添加下面几个属性,后面两个属性根据添加的sts权限角色获取。

public static Long expire;//有效期

public static String roleSessionName;

public static String roleArn;

生成临时凭证,并且使用临时凭证生成s3客户端访问,如下:

	@Override
    public Credentials getCredentials() {
        AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(
                        new BasicAWSCredentials(OssConfiguration.accessKey, OssConfiguration.secretKey)))
                .withRegion(OssConfiguration.region).build();

        AssumeRoleRequest request = new AssumeRoleRequest()
                .withRoleArn(OssConfiguration.roleArn)
                .withRoleSessionName(OssConfiguration.roleSessionName)
                .withDurationSeconds(Math.toIntExact(OssConfiguration.expire));
        AssumeRoleResult result = stsClient.assumeRole(request);
        Credentials credentials = result.getCredentials();
        BasicSessionCredentials awsCredentials = new BasicSessionCredentials(
                credentials.getAccessKeyId(),
                credentials.getSecretAccessKey(),
                credentials.getSessionToken());

        AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
                .withRegion(OssConfiguration.region)
                .build();
        return credentials;

使用临时凭证生成的s3客户端可以上传下载对象等。到此s3的相关用法全部完成。最近因为项目要上海外,所以一直在研究亚马逊的服务,亚马逊在使用上对开发者来说真的没有阿里云友好,文档感觉很乱。

本文手打,转载请注明出处。

【仓颉三方库】对象存储——s3client4cj AWS S3 的仓颉客户端实现, 参考Java实现from ...main() {....build()有2种方式实现自定义HttpClient使用默认的实现类, 其构造方法的参数是, 可以对进行自定义, 如示例代码, 就是定义了一个高日志级别的更多的使用方法, 如支持HTTP2等, 可以参考仓颉库使用指南提供一个新的实现类, 实现接口from ...main() {.build().....build()⚠️方法参数, 返回结果表示是否要重试方法参数。 阅读详情

相关推荐

告别龟速下载:一键切换国内源,让brew飞起来

本文详细介绍了如何通过切换国内镜像源(如阿里云、清华大学等)大幅提升brew的下载速度,解决国内用户使用brew时常见的龟速问题。文章提供了主流镜像源的横向评测、切换步骤、常见报错解决方法及进阶技巧,帮助开发者高效使用brew进行软件包管理。

weixin_28841265的博客 472

AmazonS3基本方法简述

AmazonS3方法简述 我们影像的方式现在修改为了文件服务器的方式存储,使用的是H3C的文件存储,但是没有给对应的说明文档,就是说和AmazonS3的方法一样,于是我们就直接面对开源开发了。 依赖 <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> &lt

又是重名了 4384

Qt S3客户端——用Amazon S3协议实现数据上传下载

值得注意的是,S3路径可以使用类似于文件系统路径的方式进行访问,例如"s3://bucket/key"表示访问名为"bucket"的S3存储桶,其中"key"是对象的唯一标识符。首先,我们需要创建一个新的AWS账户,申请S3服务,获取Access Key和Secret Key等信息。Amazon S3是一个可扩展的、高性能的对象存储服务,广泛应用于云计算、大数据和Web应用等领域。通过以上步骤,我们就可以快速编写一个简单的Qt S3客户端程序,实现数据在本地PC和Amazon S3之间的无缝传输。

CodeJolt的博客 931

亚马逊S3Client实现上传下载功能

亚马逊S3Client实现上传下载等功能。

weixin_51291483的博客 3296

第四节、C# 上位机面向对象编程详解(工控硬件继承实战版)

继承核心价值:在 C# 上位机工控开发中,继承的核心是通用逻辑复用与接口统一,将所有硬件的通用属性 / 方法封装到抽象基类,子类只需实现独有逻辑,大幅减少冗余代码。基类设计要点:优先使用抽象基类,合理分配访问修饰符(privateprotectedpublic),定义通用事件与虚方法,提供资源释放机制,兼顾复用性与扩展性。子类设计要点:通过: base()调用基类构造函数,强制实现抽象方法(保证接口统一),选择性重写虚方法(实现独有逻辑),复用基类的protected成员。多设备管理。

kylezhao2019的博客 787

LwIP在国产MCU的落地实践:从协议栈优化到网络稳定性实战

本文详细介绍了LwIP协议栈在国产GD32F407 MCU上的移植与优化实践,涵盖硬件平台选择、驱动适配、协议栈调优和网络稳定性提升策略。通过内存管理优化、实时操作系统集成和性能测试,为工业物联网应用提供高可靠性网络通信解决方案,显著提升数据传输效率和系统稳定性。

m2n3b4v5c6的博客 270

S3对象存储接口文档中文版介绍:深入了解亚马逊S3接口,轻松管理数据存储

S3对象存储接口文档中文版介绍:深入了解亚马逊S3接口,轻松管理数据存储 【下载地址】S3对象存储接口文档中文版介绍 这份《S3对象存储接口文档中文版》为亚马逊S3对象存储接口提供了一份详尽的中文指南,解决了官方仅提供英文文档的难题。它涵盖了接口的基本概念、操作方法和注意事项,帮助用户更高效地管理数据存储。无论是初学者还...

gitblog_06718的博客 529

JAVA:Spring Boot 集成 Atomikos 实现分布式事务

摘要: Atomikos是一款基于JTA标准的分布式事务协调器,通过两阶段提交(2PC)协议实现跨数据库/消息系统的事务一致性,适用于金融等高要求场景。本文以Spring Boot集成Atomikos为例,演示多数据源(订单库、库存库)的分布式事务管理。核心步骤包括:引入Atomikos依赖、配置XA数据源、设置两阶段提交的MyBatis多数据源,并通过Atomikos协调全局事务,确保跨库操作原子性。代码示例涵盖配置类、YAML定义及MySQL XA数据源初始化,为分布式系统提供强一致性解决方案。

木头 334

S3对象存储接口文档中文版介绍

S3对象存储接口文档中文版介绍 【下载地址】S3对象存储接口文档中文版介绍 这份《S3对象存储接口文档中文版》为亚马逊S3对象存储接口提供了一份详尽的中文指南,解决了官方仅提供英文文档的难题。它涵盖了接口的基本概念、操作方法和注意事项,帮助用户更高效地管理数据存储。无论是初学者还是经验丰富的开发者,都能从中获得清晰的指导...

gitblog_06780的博客 417

第95节:多模型多卡推理管理

多模型推理:在同一硬件平台上同时部署多个不同或相同的深度学习模型,满足多任务需求。多卡推理:利用多块 GPU 资源,提升推理吞吐量与并发能力。目标:合理分配 GPU 资源,实现高效、低延迟的推理服务。

yumeiguo的博客 217

Qt C++ + Qt 3D 的数字孪生工厂

以下是一个基于 **Qt C++ + Qt 3D** 的数字孪生工厂完整源码示例,集成了 **Qt 3D** 产线建模和 **WebSocket** 实时数据交互。ui->qualifiedProductsLabel->setText(QString("合格产品: %1").arg(data.qualifiedProducts));ui->totalProductsLabel->setText(QString("总产量: %1").arg(data.totalProducts));

寒寒豆豆软件公司的博客 149

AWS亚马逊云账号注册、免费申请1年云服务器以及Amazon EC2服务与Amazon Lightsail服务的配置与使用

最新AWS亚马逊云服务平台账号注册,免费申请12个月亚马逊云服务器,以及Amazon EC2服务与Amazon Lightsail服务的配置与使用。

积跬步,至千里。 1万+

MetaGPT核心模块:Data Interpreter 上手实战 - 数据分析和可视化(附运行过程详解)

上篇文章我们详细解读了 DataInterpreter 的实现原理(论文),本文将开始上手实操,开始写代码用上 DataInterpreter。从最简单的例子开始,先给大家看下其运行过程,看下DataInterpreter是如何自动拆解任务,完成任务的,帮助大家构建直观认识。

同学小张的博客 371

亚马逊测评账号亚马逊买家账号防关联浏览器

简单的来讲需要用到信用卡,一切正规的服务商公司用的都是虚拟信用卡来做号,也就是用虚拟信用卡来支付订单。黑鲨跨境多账号防关联超级浏览器最大的优点是简单,他为所有类型的客户而设计,而不仅仅是专业的用户,也特别针对国内用户开发,原生中文界面并且使用简单易懂的界面提示,让初次使用的用户也能够很快上手默认情况下黑鲨浏览器更加平易近人。今年做亚马逊测评的人越来越多,现在除了个人以外还有很多服务商公司,那么问题来了,卖家究竟要怎么去选择测评,对于新手卖家想要推自己的商品,主要就是做测评。3、付款的卡建议用虚拟信用卡。

2201_75298277的博客 190

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!!

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!! 第一次使用时,需要使用设置系统全局的huggingface token,这。点击huggingface首页右上角的头像 → settings → access tokens,创建一个write权限的token,名字可以随便取。

拥抱具身智能,昇腾Ascend C 3104

基于STM32的智能血氧、心率、体温、血压监测系统

摘要:本文设计了一款基于STM32F103C8T6的多功能健康监测系统,可实时检测血氧、心率、体温和血压四项生理参数。系统集成MAX30102、DS18B20等传感器模块,采用OLED显示和蓝牙无线传输技术,实现一键血压测量、阈值报警及手机APP数据管理功能。硬件设计包含传感器采集、电源管理、显示报警等模块;软件采用模块化架构,实现数据采集处理、蓝牙通讯等功能。测试表明系统测量准确可靠,为家庭健康监测提供了便携解决方案。未来可扩展更多监测参数和智能分析功能。

3254968421的博客 770

大型数据迁移,不妨看看亚马逊云科技SnowballEdge

增强型Snowball Edge存储优化型设备专为PB级数据迁移项目而设计,具有210TB的NVMe存储空间,每秒可传输高达1.5千兆字节的数据。为了使迁移尽可能顺畅和高效,亚马逊云科技制定了一个定义明确的大型数据迁移计划。8、当设备到达时,将它们连接到我的网络,通过S3(阅读管理亚马逊云科技存储)或NFS(阅读使用NFS文件共享管理文件存储)将数据复制到这些设备,然后将其返回到亚马逊云科技进行提取!定价——为设备的使用以及进出亚马逊云科技的数据传输付费,并提供按需定价和承诺预付定价选项。

2301_77985753的博客 200

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

亚马逊

海外购之Amazon亚马逊购物手把手教程 来源: 费嘉祺的日志   本篇教程以Amazon亚马逊为例,一步一步手把手教你从注册账号到下单成功,希望对不知如何海外购的网友有所帮助,让更多的人能够享受到海外购的乐趣。 1.注册账号 在浏览器的地址栏输入http://www.amazon.com   恭喜你,到此你已经成功

pidoudou的专栏 2495

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

亚马逊云科技在线系列讲座——如何在亚马逊云科技云服务上构建千万级用户应用

用户选择云计算平台来构建应用的一个重要原因是云平台的高弹性和高扩展性。面向互联网的应用往往需要支撑大量用户的使用,但是构建一个高扩展性的、高可用的应用具有一一定的挑战,不过基于亚马逊云科技云服务来构建应用可以相对简化这个事情。这个在线讲座将讨论如何如何充分利用云平台的特性和亚马逊云科技的相关服务来构建一个可以支撑千万级用户的应用。通过讨论不同用户数量级别的应用需求和架构特点,然后结合不同的亚马逊云科技的服务来满足用

亚马逊云科技专栏 6067

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

浏览器多开独立ip_亚马逊测评|亚马逊测评账号防关联,各系统网络环境IP解析...

在这里相信做亚马逊测评的朋友都很明白,做测评就少不了自养号,做自养号一定知道 IP 的重要性。IP 的好坏直接决定了我们账号的稳定性,成功率等问题。亚马逊测评这个圈子里也流传着各种 IP 方案,相信大家正在使用着其中一种和几种,同时也会有更多的朋友对 IP 的认识还不够清晰,今天来论坛针对 IP 给大家一个全方位的分析。近几个月以来测评行业很多朋友跟我提到谷歌 GOOGLE fi 断网了...

weixin_39533280的博客 1731

A亚马逊WS网上系列讲座——怎么样AWS云平台上千万用户的应用建设

用户选择云计算平台构建应用程序的一个重要原因是高弹性的云平台和可扩展性。面向Internet应用程序通常需要支持用户使用大量,但要建立一个高度可扩展、具有一定的挑战,高度可用的应用程序,只有立足AWS云平台构建应用程序,可以相对简化的东西。此次网络研讨会将讨论如何利用的特点,充分利用怎样的云平台和AWS的相关服务来构建一个能够支撑千万级用户的应用。通过讨论不同用户数量级别的应用需求和架构特...

weixin_33939843的博客 268

亚马逊云服务器(AWS)会限制用户使用吗?深度解读AWS资源政策

AWS采用"按需分配"模式,资源限制取决于实例配置、账户配额和区域余量,而非人为限速。95%的限速投诉源于服务配额未正确配置。文章分析了可能触发软限制的行为及解决方案,推荐了TrustedAdvisor等3个资源管理工具,并提醒代付注意事项。AWS资源使用如同自助餐,需避免浪费、遵守政策,大额资源需预申请。跨境电商案例显示,突发扩容200台EC2实例可行,但需提前申请vCPU限额提升。

weixin_47018923的博客 1027

关于联想笔记本ThinkPad T460s 重装win10系统的一些经历

在安装win10前我就在想DG工具中显示了硬盘上三个没有盘符的盘,几百兆一个,不知道是干啥的,我就在网上搜了一艘,一个叫system的盘、一个叫MSR的盘、一个叫WinRE_DRV的盘,然后万能的互联网告诉了我,只有品牌电脑上才有这些。拆开后盖清理了下灰尘,结果正常开机进入了系统。这次用老毛桃一键装机,选择win10系统,只有一个版本,安装官网上的操作,一次成功了,拔掉U盘,重启,20秒进入了系统。

qq_24396413的博客 3968

亚马逊多开浏览器有哪些?

这类浏览器专为跨境电商多账号运营设计,核心优势是「创建独立隔离环境」,模拟不同设备指纹和网络环境,从根源规避亚马逊关联检测,是亚马逊多开的主流选择,适合个人卖家、中小团队及大卖家。核心亮点:一站式防关联解决方案,操作门槛极低,无需复杂配置,IP资源稳定,适配亚马逊全站点,国内跨境卖家市场占有率达82%,兼顾安全性和易用性,是新手和大卖家的首选工具之一。1. 防关联核心:无论使用哪种浏览器,都需遵循「一账号一环境一IP」原则,避免多个账号共用IP、共用浏览器环境,这是规避亚马逊关联的核心前提。

2201_75994616的博客

3个问题!验明GPT-4真身;基于GPT科研加速技巧汇总;Midjourney神仙教程;印象笔记有AI功能啦 | ShowMeAI日报

亚马逊AI编程助手CodeWhisperer正式可用; 钉钉接入千问大模型; 印象笔记全面上线AIGC服务; 金山办公正式发布WPS AI; 硅谷知名投资人谈AutoGPT的巨大潜力和风险……点击阅读全文

ShowMeAI研究中心 1万+
上一篇: 上云API对接大疆机场开发板
下一篇: AWS iot core 架构物联网项目
yychen_java
博客等级 码龄8年 1451粉丝 77原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值