728x90
이제 S3와 앱만 연동하면 끝난다.
안드로이드 프로젝트에서 앱 레벨 그레들에 아래와 같이 추가한다.
dependencies {
...
implementation 'com.amplifyframework:aws-storage-s3:1.6.11'
implementation 'com.amplifyframework:aws-auth-cognito:1.6.11'
...
}
그리고 메니페스트에 관련 퍼미션을 추가해준다.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
그리고 이전글에서 생성한 클래스에
Amplify.addPlugin(AWSCognitoAuthPlugin())
Amplify.addPlugin(AWSS3StoragePlugin())
이 두줄을 추가해준다. (S3에 접근하기 위한 Conginito와 S3 Storage Plugin)
class MyAmplifyApp: Application() {
override fun onCreate() {
super.onCreate()
try {
Amplify.addPlugin(AWSCognitoAuthPlugin()) // 추가
Amplify.addPlugin(AWSS3StoragePlugin()) // 추가
Amplify.configure(applicationContext)
Log.i("MyAmplifyApp", "Initialized Amplify")
} catch (error: AmplifyException) {
Log.e("MyAmplifyApp", "Could not initialize Amplify", error)
}
}
}
그리고 가장 중요한 단계인 json 파일을 설정해줘야 한다. 경로는 아래와 같다.
amplifyconfiguration을 아래와 같이 채워준다. 비워놓은 부분은 각자 설정한 값에 맞게 채운다.
"UserAgent": "aws-amplify-cli/2.0",
"Version": "1.0",
"auth": {
"plugins": {
"awsCognitoAuthPlugin": {
"UserAgent": "aws-amplify-cli/0.1.0",
"Version": "0.1.0",
"IdentityManager": {
"Default": {}
},
"CredentialsProvider": {
"CognitoIdentity": {
"Default": {
"PoolId": "us-east-2:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Region": "{리전이름 ex)us-east-2}"
}
}
},
"Auth": {
"Default": {
"authenticationFlowType": "USER_SRP_AUTH"
}
},
"S3TransferUtility": {
"Default": {
"Bucket": "{버킷이름}",
"Region": "{리전이름 ex)ap-northeast-2}"
}
}
}
}
},
"storage": {
"plugins": {
"awsS3StoragePlugin": {
"bucket": "{버킷이름}",
"region": "{리전이름 ex)ap-northeast-2}",
"defaultAccessLevel": "guest"
}
}
}
}
awsconfiguration을 아래와 같이 채워준다. 비워놓은 부분은 각자 설정한 값에 맞게 채운다.
{
"UserAgent": "aws-amplify-cli/0.1.0",
"Version": "0.1.0",
"IdentityManager": {
"Default": {}
},
"CredentialsProvider": {
"CognitoIdentity": {
"Default": {
"PoolId": "us-east-2:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Region": "{리전이름 ex)ap-northeast-2}"
}
}
},
"Auth": {
"Default": {
"authenticationFlowType": "USER_SRP_AUTH"
}
},
"S3TransferUtility": {
"Default": {
"Bucket": "{버킷이름}",
"Region": "{리전이름 ex)ap-northeast-2}"
}
}
}
마지막으로 간단한 텍스트 파일을 생성하여 전송하는 코드를 원하는 부분에 넣어서 테스트 해본다.
val exampleFile = File(applicationContext.filesDir, "ExampleKey")
exampleFile.writeText("Example file contents")
Amplify.Storage.uploadFile(
System.currentTimeMillis().toString(),
exampleFile,
{ result -> Log.d("MyAmplifyApp", "Successfully uploaded: " + result) },
{ error -> Log.d("MyAmplifyApp", "Upload failed", error) }
)
끝.
샘플 코드 : github.com/minseongkimdev/Android-Amplify-Store-Simple-Sample
'개발 > AOS' 카테고리의 다른 글
카카오 소셜로그인 Release APK 이슈 해결 (0) | 2021.03.09 |
---|---|
리사이클러뷰가 NestedScrollView안에 있을 때 SmoothScrollToPosition이 동작 안할 경우 해결법 (0) | 2021.03.02 |
안드로이드 AWS Amplify + S3에 파일 업로드 Android uploads files with AWS Amplify + S3 (2/3) S3버킷 생성 (0) | 2021.02.03 |
안드로이드 AWS Amplify + S3에 파일 업로드 Android uploads files with AWS Amplify + S3 (1/3) 환경 세팅 (0) | 2021.02.03 |
Android S3연동 하기(0) - S3란? (0) | 2021.02.02 |