# YAML パッãƒã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ {% include 'overrides-intro.ja.md' %} ## CDK オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã‚ˆã‚Šã‚‚ YAML パッãƒã‚’使用ã™ã‚‹ã®ã¯ã©ã®æ§˜ãªå ´åˆã§ã™ã‹ï¼Ÿ ã©ã¡ã‚‰ã®ã‚ªãƒ—ションも Copilot [Manifest](../../manifest/overview.ja.md)ã«ã‚ˆã£ã¦è¡¨é¢åŒ–ã•れãªã„機能ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦è¨å®šã™ã‚‹ã¨ã„ã†"ガラスを壊ã™"仕組ã¿ã§ã™ã€‚ 1) ä»–ã®ãƒ„ールやフレームワーク(例ãˆã°ã€[Node.js](https://nodejs.org) ã‚„ [CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html))ã«ä¾å˜ã—ãŸãç„¡ã„å ´åˆã€ 2) ã»ã‚“ã®å°‘ã—ã ã‘ã®ä¿®æ£ãŒã—ãŸã„å ´åˆã«ã¯ã€YAML パッãƒã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ ## å§‹ã‚æ–¹ `copilot [noun] override` コマンドを実行ã™ã‚‹ã¨ã€YAML パッãƒã‚’使ã£ã¦ CloudFormation テンプレートを拡張ã§ãã¾ã™ã€‚ 例ãˆã°ã€`copilot svc override` コマンドã«ã‚ˆã‚Šã€ Load Balanced Web Service ã®ãƒ†ãƒ³ãƒ—レートを更新ã—ã¾ã™ã€‚ コマンドã¯ã€ä»¥ä¸‹ã®æ§˜ãªæ§‹é€ ã§ã€`copilot/[name]/override` ディレクトリé…下ã«ã‚µãƒ³ãƒ—ル㮠`cfn.patches.yml` ファイルを作æˆã—ã¾ã™ã€‚ ## ã©ã®æ§˜ãªä»•組ã¿ã§ã—ょã†ã‹ï¼Ÿ `cfn.patches.yml` ã®æ§‹æ–‡ã¯ã€[RFC6902: JSON Patch](https://www.rfc-editor.org/rfc/rfc6902) ã«æº–æ‹ ã—ã¾ã™ã€‚ ç¾åœ¨ã¯ã€CLI 㯠3 ã¤ã®ã‚ªãƒ—ションをサãƒãƒ¼ãƒˆã—ã¾ã™: `add`, `remove`, and `replace`. 以下ã¯ã‚µãƒ³ãƒ—ル㮠`cfn.patches.yml` ファイルã§ã™: ```yaml - op: add path: /Mappings value: ContainerSettings: test: { Cpu: 256, Mem: 512 } prod: { Cpu: 1024, Mem: 1024} - op: remove path: /Resources/TaskRole - op: replace path: /Resources/TaskDefinition/Properties/ContainerDefinitions/1/Essential value: false - op: add path: /Resources/Service/Properties/ServiceConnectConfiguration/Services/0/ClientAliases/- value: Port: !Ref TargetPort DnsName: yamlpatchiscool ``` å„パッãƒã¯ã€CloudFormation テンプレートã«é †æ¬¡é©ç”¨ã•れã¾ã™ã€‚é©ç”¨ã•れãŸãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆã¯æ¬¡ã®ãƒ‘ッãƒã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã«ãªã‚Šã¾ã™ã€‚ ã™ã¹ã¦ã®ãƒ‘ッãƒãŒæ£å¸¸ã«é©ç”¨ã•れるã‹ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ã¾ã§ã€è©•価ã¯ç¶™ç¶šã•れã¾ã™ã€‚ ### パスã®è©•価 `path` フィールドã«å¯¾ã™ã‚‹ãƒ‘ッãƒã¯ [RFC6901: JSON Pointer](https://www.rfc-editor.org/rfc/rfc6901) æ§‹æ–‡ã«æº–æ‹ ã—ã¾ã™ã€‚ - å„ `path` ã®å€¤ã¯ `/` æ–‡å—ã§åŒºåˆ‡ã‚‰ã‚Œã€å¯¾è±¡ã® CloudFormation プãƒãƒ‘ティã«åˆ°é”ã—ãŸæ™‚点ã§è©•価ãŒåœæ¢ã—ã¾ã™ã€‚ - 対象ã®ãƒ‘スãŒé…列ã§ã‚ã£ãŸå ´åˆã€å‚照トークンã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“: - 0 ã‹ã‚‰å§‹ã¾ã‚‹æ•°å—ã§æ§‹æˆã•れる文å—。 - é…列ã¸è¿½åŠ ã™ã‚‹ãŸã‚ã«ã€`add` æ“作を実施ã™ã‚‹å ´åˆã€`-` ã¨ã„ㆠ1 æ–‡å—を指定ã™ã‚‹ ## è¿½åŠ ã®ä¾‹ æ—¢å˜ãƒªã‚½ãƒ¼ã‚¹ã«å¯¾ã—ã¦ã€æ–°ã—ã„プãƒãƒ‘ãƒ†ã‚£ã‚’è¿½åŠ ã™ã‚‹å ´åˆ: ```yaml - op: add path: /Resources/LogGroup/Properties/Tags value: - Key: keyname Value: value1 ``` é…列ã®ç‰¹å®šã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã«æ–°ã—ã„プãƒãƒ‘ãƒ†ã‚£ã‚’è¿½åŠ ã™ã‚‹å ´åˆ: ```yaml - op: add path: /Resources/TaskDefinition/Properties/ContainerDefinitions/0/EnvironmentFiles/0 value: arn:aws:s3:::bucket_name/key_name ``` é…åˆ—ã®æœ€å¾Œã«æ–°ã—ã„è¦ç´ ã‚’è¿½åŠ ã™ã‚‹å ´åˆ: ```yaml - op: add path: /Resources/TaskRole/Properties/Policies/- value: PolicyName: DynamoDBReader PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - dynamodb:Get* Resource: '*' ``` æ—¢å˜ãƒ—ãƒãƒ‘ティã®å€¤ã‚’ç½®æ›ã™ã‚‹å ´åˆ: ```yaml - op: replace path: /Resources/LogGroup/Properties/RetentionInDays value: 60 ``` é…列ã‹ã‚‰è¦ç´ を削除ã™ã‚‹å ´åˆã€æ£ç¢ºãªã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’å‚ç…§ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™: ```yaml - op: remove path: /Resources/ExecutionRole/Properties/Policies/0/PolicyDocument/Statement/1/Action/0 ``` リソース全体を削除ã™ã‚‹å ´åˆ: ```yaml - op: remove path: /Resources/ExecutionRole ```