0

아래 코드를 사용하여 Amazon Cognito 사용자를 등록합니다. 그러면 사용자가 가입 할 때 파일을 Amazon S3 Bucket에 업로드하려고합니다.Amazon Cognito로 Amazon S3에 업로드

사용자가 가입 한 후 버킷을 업로드 할 준비가 되려면 어떻게해야합니까? 는

var roleArn = 'arn:aws:iam::123456:role/Cognito_Auth_Role'; 
    var bucketName = 'MY_BUCKET'; 
    AWS.config.region = 'eu-west-1'; 
     var poolData = { 
      UserPoolId : 'POOL_ID', // your user pool id here 
      ClientId : 'CLIENT_ID' // your app client id here 
     }; 
     var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); 
     var userData = { 
      Username : 'username', // your username here 
      Pool : userPool 
     }; 
     var attributeList = []; 
     var password 
     //Create Bucket 
     var bucket = new AWS.S3({ 
     params: { 
      Bucket: bucketName 
     } 
    }); 

var dataEmail = { 
    Name : 'email', 
    Value : '[email protected]' // your email here 
}; 
var dataPhoneNumber = { 
    Name : 'phone_number', 
    Value : '+1234567890' // your phone number here with +country code and no delimiters in front 
}; 

...

var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail); 
var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber); 
attributeList.push(attributeEmail); 
attributeList.push(attributePhoneNumber); 
var cognitoUser; 
userPool.signUp('username', 'password', attributeList, null, function(err, result){ 
    if (err) { 
     alert(err); 
     return; 
    } 
    cognitoUser = result.user; 
    console.log('user name is ' + cognitoUser.getUsername()); 

}); 

답변

2

당신은 Cognito 연합 정체성의 정체성 풀을 만들어야합니다 감사합니다. 사용자 풀을 인증 된 ID에 대한 특정 ID 풀의 ID 공급자로 설정하십시오.

위의 코드로 사용자가 가입 한 후에는 (자신의 정보와 함께 자리를 대체) 아래의 코드를 사용하여 AWS 자격 증명을 그에게 확인하고 로그인 및 취득 할 필요가있을 것이다 : 상기

var cognitoUser = userPool.getCurrentUser(); 

if (cognitoUser != null) { 
    cognitoUser.getSession(function(err, result) { 
     if (result) { 
      console.log('You are now logged in.'); 

      // Add the User's Id Token to the Cognito credentials login map. 
      AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
       IdentityPoolId: 'YOUR_IDENTITY_POOL_ID', 
       Logins: { 
        'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': result.getIdToken().getJwtToken() 
       } 
      }); 
     } 
    }); 
} 
//call refresh method in order to authenticate user and get new temp credentials 
AWS.config.credentials.refresh((error) => { 
    if (error) { 
     console.error(error); 
    } else { 
     console.log('Successfully logged!'); 
    } 
    }); 

그 코드 블록의 끝 부분에서 자바 스크립트 용 AWS SDK (s3 클라이언트)와 함께 S3에 파일을 업로드 할 수있는 AWS 자격 증명을 얻었을 것입니다.

+0

안녕하세요. Chrome 콘솔에서이 오류가 발생했습니다. 캐치 오류 : null의 속성 '새로 고침'을 읽을 수 없습니다. –

+0

감사합니다. Cognito를 사용하여 이미지를 S3에 업로드하려고하면 좌절감에 차서 코드를 발견하게되었습니다. 감사합니다. –

+0

나는 너무 빨리 말했습니다! 그것은 Unauthenticated identies를 사용하여 로그인 한 것으로 밝혀졌습니다. 비활성화 한 즉시 NotAuthorizedException 예외가 발생합니다! –

관련 문제