嗨,我试图以编程方式禁用API密钥,但找不到任何文档.
到目前为止,我找到了可能是我需要的2个类:
UpdateApiKeyRequest和DeleteApiKeyRequest.问题是我不知道如何处理这些问题.
请有人告诉我如何使用这些类来禁用或删除API密钥?
我正在使用 Amazon Java SDK(在撰写本文时最新版本为 1.11.147)和 Groovy(Groovy 版本:2.4.11 JVM:1.8.0_112 供应商:Oracle Corporation OS:Mac OS X)将文件上传到 S3。使用 Amazon 文档中关于Transfer Manager 的说明,我能够将内容从一个存储桶复制到另一个存储桶。但是,上传总是失败。我尝试了以下3种方法。我让 Grapes 抓取了 httpclient 和 httpcore 的新版本,因为我在这个 Stack Overflow Post Apache PoolingHttpClientConnectionManager throwing非法状态异常中读到了什么
@Grapes([
@Grab(group='com.amazonaws', module='aws-java-sdk', version='1.11.147'),
// https://mvnrepository.com/artifact/org.apache.commons/commons-compress
@Grab(group='org.apache.commons', module='commons-compress', version='1.13'),
// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.5.3'),
// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore
@Grab(group='org.apache.httpcomponents', module='httpcore', version='4.4.6')
])
// creds is String saying which ~/.aws/credentials profile to use
def credentials = new ProfileCredentialsProvider(creds)
def s3client = AmazonS3ClientBuilder.standard().
withCredentials(credentials).
withRegion(region).
build()
def tx = TransferManagerBuilder.standard().
withS3Client(s3client). …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 aws-java-sdk 版本 1.11.339 从 AWS 获取 ECR 授权令牌。我创建了一个类来这样做:
public class ECRTokenGetter {
private static final Logger LOGGER = LoggerFactory.getLogger(ECRTokenGetter.class);
private static final int SINGLE_ELEMENT_INDEX = 0;
public static String getEcrAuthorisationToken(Credentials creds, String awsRegion, String registryId) {
LOGGER.debug("Obtaining temporary authorisation credentials from AWS ECR");
AmazonECR ecrClient = AmazonECRClientBuilder.standard()
.withRegion(awsRegion)
.withCredentials(new AWSStaticCredentialsProvider(new BasicSessionCredentials(
creds.getAccessKeyId(),
creds.getSecretAccessKey(),
creds.getSessionToken())))
.build();
return ecrClient.getAuthorizationToken(new GetAuthorizationTokenRequest()
.withRegistryIds(registryId))
.getAuthorizationData().get(SINGLE_ELEMENT_INDEX)
.getAuthorizationToken();
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,在执行代码时,我收到以下异常:
Exception in thread "main" java.lang.IllegalArgumentException: hostname cannot be null
at com.amazonaws.util.AwsHostNameUtils.parseRegion(AwsHostNameUtils.java:79)
at com.amazonaws.util.AwsHostNameUtils.parseRegionName(AwsHostNameUtils.java:59)
at com.amazonaws.auth.internal.AWS4SignerRequestParams.resolveRegion(AWS4SignerRequestParams.java:121) …Run Code Online (Sandbox Code Playgroud) 我按照https://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURLJavaSDK.html中的示例创建预签名 s3 url (v4),当我尝试访问已签名的 s3 url (v4) 时,出现“访问被拒绝”错误网址
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>0FB02ECDDF5EAC7B</RequestId>
<HostId>vA+mmsv9PCunNe5uPkPrmpqqN3vFctQ13c9dIRlKWTYsT0zNA1V9g+4YS+lCItrBlyQtdHpyspg=</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)
以下是代码片段
public class GeneratePresignedURL {
public static void main(String[] args) throws IOException {
String clientRegion = "us-east-1";
String bucketName = "com-example-bucket";
String objectKey = "path/to/file.img"; // No leading `/`
// https://com-example-bucket.s3.amazonaws.com/path/to/file.img
try {
AWSCredentialsProvider awsCredentialsProvider = new DefaultAWSCredentialsProviderChain();
// Assuming that us-east-1 defaults to v4, couldn't find a way to set it explicitly
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(awsCredentialsProvider)
.build();
// Set …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services pre-signed-url aws-sdk aws-java-sdk
我想认为这是个不错的选择,但我想先提出询问。因此,您知道我从S3存储桶下载文件或向S3存储桶上传文件时,适用于Java的AWS开发工具包是否始终使用安全通道吗?还是在编写代码时或在S3存储桶本身中应该配置的东西?
我们正在将文件上传到 Amazon S3,我想添加一个功能来显示文件中的行数。如何在不下载的情况下获取 S3 上 csv 文件的行数?
我想旋转AWS IAM用户访问密钥,仅旋转访问密钥,而不旋转秘密访问密钥,当我尝试旋转密钥时,我能够旋转整个密钥,而不是单独访问密钥。
我正在玩一个在 docker 上运行的 localstack 实例。我尝试访问 sns 服务,但在执行“listTopics()”或“createTopic()”等方法时收到错误我还没有在 Google 上找到任何帮助,所以有人知道这里出了什么问题吗?
错误:
Caused by: java.lang.NoSuchFieldError: ENDPOINT_OVERRIDDEN
at com.amazonaws.services.sns.AmazonSNSClient.executeListTopics(AmazonSNSClient.java:1830) ~[aws-java-sdk-sns-1.11.875.jar:na]
at com.amazonaws.services.sns.AmazonSNSClient.listTopics(AmazonSNSClient.java:1812) ~[aws-java-sdk-sns-1.11.875.jar:na]
at com.amazonaws.services.sns.AmazonSNSClient.listTopics(AmazonSNSClient.java:1853) ~[aws-java-sdk-sns-1.11.875.jar:na]
at com.example.dockerspringboot.DockerSpringBootApplication.getSnsClient(DockerSpringBootApplication.java:62) ~[classes/:na]
at com.example.dockerspringboot.DockerSpringBootApplication$$EnhancerBySpringCGLIB$$a65fee3d.CGLIB$getSnsClient$2(<generated>) ~[classes/:na]
at com.example.dockerspringboot.DockerSpringBootApplication$$EnhancerBySpringCGLIB$$a65fee3d$$FastClassBySpringCGLIB$$99ad7dfd.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at com.example.dockerspringboot.DockerSpringBootApplication$$EnhancerBySpringCGLIB$$a65fee3d.getSnsClient(<generated>) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE]
... 98 common frames omitted
Run Code Online (Sandbox Code Playgroud)
我尝试通过 java aws sdk 访问 localstack sns 服务:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sns</artifactId>
<version>1.11.875</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我的应用程序中抛出错误的代码如下所示:
private String serviceEndpoint = …Run Code Online (Sandbox Code Playgroud) aws-java-sdk ×8
amazon-s3 ×4
java ×4
aws-sdk ×2
amazon-iam ×1
groovy ×1
localstack ×1
security ×1