반응형


파이썬 말고 Spring boot(Java)에서 슬랙 웹훅을 사용해 볼 것이다.



- 파이썬으로 Slack 통신하기

1. 2018/11/03 - [Develop/Python] - Python Slack WebHook (파이썬 슬랙 웹훅) 만들기

2. 2018/11/03 - [Develop/Python] - Python Slack Bot (파이썬 슬랙 봇) - slackclient

3. 2018/11/03 - [Develop/Python] - Python Slack Bot (파이썬 슬랙 봇) - slacker

4. 2018/11/08 - [Develop/Python] - Python Slack Lunch Bot - 점심 알리미 봇

5. 2019/05/03 - [Develop/Node.js] - [Node.js] Node.js Slack WebHooks (슬랙 웹훅)



1. 먼저 아래의 경로에 들어가서 슬랙 웹훅 추가하는 법을 보고 온다.

2018/11/03 - [Develop/Python] - Python Slack WebHook (파이썬 슬랙 웹훅) 만들기


2. 아래의 dependency를 추가한다.



  net.gpedro.integrations.slack
  slack-webhook
  1.4.0

3. 아래와 같이 연습해본다.


@GetMapping("/test")
	public void webHook() {
		
		SlackApi api = new SlackApi("https://hooks.slack.com/services/");    //웹훅URL
		api.call(new SlackMessage("#general", "TEST-WEBHOOK", "연습~~~~"));
		
	}

4. 결과





슬랙 자체에서 Java API를 많이 제공해준다
https://api.slack.com/community  - 여기에 들어가면 확인할 수 있다.

이 글에서 사용한 API는 
이것이다.


반응형
반응형


Spring boot에서 AWS S3 파일업로드 하는 방법이다.




Spring boot AWS 배포 방법

2018/10/26 - [Develop/Spring Boot] - Spring Boot AWS Elastic BeanStalk을 이용한 배포


AWS Python Lambda 사용방법

2018/11/16 - [Develop/Python] - AWS Python Lambda (CloudWatch Lambda) 사용하기



1. S3에서 버킷을 하나 생성한다.




버킷을 생성할 때 주의할 점은 이름에 대문자가 들어가면 안되고 특수문자가 들어가면안된다. 또한, 이 버킷의 이름은 AWS S3의 전체 버킷 이름들과 중복이 되면 안된다. 예를들어 test라는 버킷을 한 경우 누군가 test라는 버킷을 사용중이라면 test라는 이름으로 버킷을 생성할 수 없다.


이름을 정한 후 옵션이나 권한 설정은 필요하면 설정을 하시고 그 외 그냥 다음을 눌러 생성한다. 어차피 옵션이나 권한은 S3를 생성하고 다시 설정을 할 수 있다.




2. Spring boot pom.xml에 dependency를 추가한다.


s3 dependency를 추가한다.



    com.amazonaws
    aws-java-sdk-s3
    1.11.452


그리고 Multipartfile 을 사용할 것이기 때문에 Multipartfile dependency를 추가한다.



    commons-fileupload
    commons-fileupload
    1.3.3


3. appliaction.properties 파일 설정.


리전 정보는 옆의 링크에서 확인할 수 있다.- https://docs.aws.amazon.com/ko_kr/general/latest/gr/rande.html 

cloud.aws.credentials.accessKey=IAM USER에서 확인
cloud.aws.credentials.secretKey=IAM USER에서 확인
cloud.aws.s3.bucket=buckettestgogo
cloud.aws.region.static=ap-northeast-2

추가로 Mutlipartfile의 파일 크기 범위를 정하고 싶으면 application.properties에 아래와 같이 추가한다.


spring.http.multipart.max-file-size=10MB
spring.http.multipart.max-request-size=10MB

4. 파일업로드


AmazonS3 의존성을 주입하고. bucket이름을 가져온다 굳이 @Value로 안가져와도 되고 buckettestgogo를 선언해도 된다.


ObjectMetadata를 통해 ContentType을 설정할 수 있다.

그리고 CloudFront를 사용하시는 분들이라면 metadata에 setCacheControl로 Cache설정이 가능하다.

또한. 파일의 권한을 지정할 수 있다. 아래 소스에는 읽기를 Public으로 설정하였다.

	@Autowired
	private AmazonS3 amazonS3;

	@Value("${cloud.aws.s3.bucket}")
	private String bucket;

	public void s3Test(MultipartFile file, String fname) {
		TransferManager tm = TransferManagerBuilder.standard().withS3Client(amazonS3).build();


		PutObjectRequest request;
		try {
	
			ObjectMetadata metadata = new ObjectMetadata();
			metadata.setCacheControl("604800"); // 60*60*24*7 일주일
			metadata.setContentType("image/png");
			request = new PutObjectRequest(bucket, fname, file.getInputStream(), metadata)
					.withCannedAcl(CannedAccessControlList.PublicRead);
			// amazonS3.putObject(request);
			Upload upload = tm.upload(request);

			upload.waitForCompletion();

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (AmazonServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (AmazonClientException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
       }


기본적인 예제를 활용하여 만들어 보았다 그 외에는 AWS에서 상세히 잘 설명되어 있다.

AWS 객체업로드 - https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/HLuploadFileJava.html

AWS 리전정보 - https://docs.aws.amazon.com/ko_kr/general/latest/gr/rande.html

반응형
반응형


Expo에서 안드로이드 사용시 could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037 

가끔 Expo 말고 순수 React Native로 실행 했다가 다시 Expo를 실행 할 때 이런 에러가 떴다.


인터넷에 아무리 뒤져봐도 adb.exe를 실행하여 adb kill-server 하라고만 하지 전혀 해결되지 않았다. 수많은 삽질끝에 해결을 하였다.

해결하기 진짜 힘들었다. 


ㄹㅇ 끔찍한 사진.


1. React Native 했다가 Expo 실행 시 에러 났을 경우 에뮬레이터에 앱을 보면 React Native 앱이 깔려 있다. 이것을 일단 지우자.(사실 안지워도 될 수 도있음??) 그리고 혹시 모르니 일단 Expo앱도 지웠다.


2. 그리고 2개의 adb.exe를 찾아야한다. 

1개가 아니다. 2개가 있다. 이러니 삽질할 수 밖에.


나의 PC같은 경우는(Windows 사용)

하나는 아래의 경로에

1. C:\Users\      \AppData\Local\Android\Sdk\platform-tools

나머지 하나는 아래의 경로에 있다.

2. C:\Users\      \AppData\Roaming\npm\node_modules\expo-cli\node_modules\xdl\binaries\windows\adb


그리고 각각 실행해서

adb -version을 찍어보면 두개가 버전이 다르다. 

1번 adb가 버전이 더 높다 그러므로 2번 adb에 1번 adb로 복사 붙여넣기하여 바꾼다.

그리고 두개의 adb를 실행하여 adb kill-server를 각각 해주고

에뮬레이터와 안드로이드 스튜디오를 종료하고 새로 키고

expo start android를 하면

다음부터 에러없이 정상적으로 작동한다.


반응형

+ Recent posts