AWS Fargate에서 Ruby를 실행하여 iOS 앱의 인증서 또는 만료일을 Slack에 알립니다.

AWS Lambda에서 Ruby를 실행하여 iOS 앱의 인증서 또는 만료일을 Slack에 알립니다. 을 이용하여 mobileprovision이나 cert의 유효기간을 정기적으로 Slack에 투고하고 있었습니다만, 요전날 어째서인지 움직이지 않게 되었습니다.

수정 이어서 요 전날 AWS Fargate가 스케줄 실행을 지원되었기 때문에, 그 곳으로 마이그레이션하기로 했습니다.

TL;TR



앱 넣었다 Docker 이미지 공개했으므로, 그것을 사용해 Fargate로 실행하면 통지해 줍니다.

Lambda 버전의 변경 사항



노드를 삭제하고 루비에만



Lambda판에서는 Node측에서 AppleDeveloperPortal의 ID/Pass와 Slack의 WEBHOOKURL을 KMS로 복호하고 있었습니다. Docker 컨테이너에 루비와 노드 런타임을 모두 넣으면 낭비가 커지므로 루비 쪽으로 옮겼습니다.

ruby, fastlane 최신



TravelingRuby나 Lambda의 사이즈 제약이 없어졌으므로, 마음껏 최신판을 사용할 수 있습니다.

CloudFormation



이번 앱이 들어간 Docker 이미지는 dockerhub에서 공개하고 있으므로 Fargate 측에서 지정하고 실행하는 것만으로 움직일 수 있습니다. 움직이기 위한 IAM Role, ECS의 태스크 정의, ECS의 클러스터까지를 작성하는 yml를 썼습니다.

CloudFormation에는 스케줄 실행 리소스도 있지만, 실행하는 VPC 정보가 필요하고 불특정 다수용으로 정상 동작하도록 쓰는 것은 귀찮았기 때문에 생략했습니다.
대신 작성시의 스쿠쇼를 두어 둡니다.

스케줄 실행 정의



이름은 적당히 합시다. cron(0 1 1 * ? *) 에서 매월 1일 10시 JST에 실행됩니다.


시작 유형은 FARGATE, 작성한 태스크 정의를 지정합니다.


컨테이너 덮어쓰기 위치에서 환경 변수를 변경합니다. ID , PASS , WEBHOOKURL에는 KMS로 암호화한 것을 넣습니다.


이제 매월 하루에 만료일이 Slack에 통보됩니다!

그런데



앱 측의 코드 바꾸지 않았지만 Fargate에서 제대로 움직이고 있습니다. 왜 Lambda판은 실패했던 것일까요. . 어쩌면 Apple 측의 변경으로 낡은 fastlane이라고 잘 취득할 수 없었던···라든지일까요.

Repo



Source: htps : // 기주 b. 코 m / 밥 ds - b / 이오 s-se rp 로후 ぇ ぇ ㅇ x 피라 치 온 - 치 ぇ c 케 r
DockerImage : htps : // 후 b. 도 c r. 코 m / r / rp ぅ sp ぅ s / 이오 s 세 r p 로후 ぇ ぇ ㅇ x 피라 치 온 - 치 ぇ c 케 r /

좋은 웹페이지 즐겨찾기