0

AWS Credentials *를 사용하여 AWS S3에 연결하고 있습니다. 내 로컬 호스트에서로컬 호스트에서 AWS S3로 업로드 할 수 있지만 AWS Elastic BeanStalk 인스턴스에서 업로드 할 수없는 이유는 무엇입니까?

final AmazonS3 s3 = new AmazonS3Client(
        new AWSStaticCredentialsProvider(new BasicAWSCredentials("accessKey*", 
         "secretKey"))); 
       s3.setRegion(Region.US_West.toAWSRegion()); 
       s3.setEndpoint("s3-us-west-1.amazonaws.com"); 

, 나는 이미지를 업로드 할 수 그리고 난이 활성화 버전 관리 이후, 나는 라인을 다음 다시 versionId를 얻을.

versionId = s3.putObject(new PutObjectRequest("bucketName", name, convFile)).getVersionId(); 

PS 3 : 코드의 조각을 시도-catch 블록에 싸여 내 ElasticBeanStalk에서 동일한 코드를 실행하면 catch 블록 인쇄이

You failed to upload fileName => fileName.jpeg (Permission denied) 

는하지만, 내가 얻을 수있다 위 versionId = null이고 S3에 이미지가 업로드되지 않습니다.

자격 증명 예외가 표시되지 않습니다. 나는 (IAM 아래) 사용자의 액세스 키를 검색

    • , 나는 그것의 어떤 사용자에게 할당하지 깨달았다.

모든 문서를 읽은 후, 나는 두 명의 사용자를 만들었습니다. 하나는 내가 만든 그룹 아래, 다른 하나는 그룹이 없습니다.

해당 사용자의 accessKey를 사용했지만 여전히 이미지를 S3에 업로드 할 수 없습니다.

이 나의 버킷 정책이 사용자를 만들기 전에 두 사용자

{ 
    "Version": "2012-10-17", 
    "Id": "Policy1", 
    "Statement": [ 
     { 
      "Sid": "Stmt1", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "arn:aws:iam::someNumnber:user/username" 
      }, 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::bucketName" 
     } 
    ] 
} 

을 만든 후 처럼 보이는 (그리고이 설정 localhost를 성공적 S3에 이미지를 업로드 할 때 위치에 다음)

{ 
    "Version": "2012-10-17", 
    "Id": "Policy15", 
    "Statement": [ 
     { 
      "Sid": "Stmt1", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::bcktName", 
       "arn:aws:s3:::bcktName/*" 
      ] 
     } 
    ] 
} 
을하는 방법입니다

나는이 이슈를 4 박 동안 완전히 쳤다. 도와주세요. 나는 boto 나 다른 것들을 사용하지 않습니다. S3에 이미지를 업로드해야하는 tomcat에 업로드 된 직선 war 파일입니다. 로컬 호스트에서는 작동하지만 S3에서는 작동하지 않습니다.

PS :이 내 CORS 구성이 어떻게 보이는지이다

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
<CORSRule> 
    <AllowedOrigin>*</AllowedOrigin> 
    <AllowedMethod>GET</AllowedMethod> 
    <AllowedMethod>POST</AllowedMethod> 
    <MaxAgeSeconds>20000</MaxAgeSeconds> 
    <ExposeHeader>ETag</ExposeHeader> 
    <ExposeHeader>x-amz-server-side-encryption</ExposeHeader> 
    <ExposeHeader>x-amz-request-id</ExposeHeader> 
    <ExposeHeader>x-amz-id-2</ExposeHeader> 
    <AllowedHeader>*</AllowedHeader> 
</CORSRule> 
</CORSConfiguration> 

PS 2 :

내가 액세스 제어 목록에 무엇을해야합니까? 현재 소유자 계정이 내 전체 AWS의 사용자 이름과 동일하다는 것을 알았습니다. 내 생각에 액세스 키와 로컬에서 작동하는 비밀 키는 소유자 계정과도 관련이 있습니다.

+0

Elastic Beanstalk EC2 인스턴스에 첨부 한 역할 정책은 무엇입니까? – Ashan

+0

@Ashan 역할 정책이란 IAM 역할을 의미합니까?BeanStalk의 Ec2 인스턴스에 대한 "IAM 역할"에 대해 "aws-elasticbeanstalk-ec2-role"이 표시됩니다. –

+0

예. 역할 내에서 부여 된 권한은 무엇입니까? – Ashan

답변

0

웹 구성 파일에서 AWSAccessKey 및 AWSSecretKey를 확인하십시오. Aws API는 이러한 자격 증명을 사용하여 s3에 로그인합니다.

같은 문제가 나에게도 나타났습니다.이 문제를 해결하여 해결했습니다.

누구에게 도움이되기를 바랍니다.