タグ付けされた質問 「amazon-cloudformation」

Amazon Web Services CloudFormationは、JSONまたはYAMLベースのテンプレートシステムで、関連するAWSリソースのコレクションを作成および管理し、それらを規則正しく予測可能な方法でプロビジョニングおよび更新できます。あなたはそれを「コードとしてのインフラストラクチャ」と考えることができます。

3
CloudFormationで既存のリソースを再利用するにはどうすればよいですか?
CloudFormationテンプレートにリソースとしてS3バケットがあります。にDeletionPolicy設定しRetainます。これは期待どおりに機能します。スタックを削除すると、実際にバケットが保持されます。ただし、スタックを再度作成しようとすると、同じバケットを再度作成しようとすると作成が失敗し、既に存在するというエラーメッセージが表示されます。 既に存在するリソースを再作成しないようにするために、CloudFormationテンプレートに何を追加する必要がありますか? テンプレートの関連するフラグメントは次のとおりです。 "Resources": { "SomeS3Bucket" : { "Type" : "AWS::S3::Bucket", "DeletionPolicy" : "Retain", "Properties": { "BucketName": "SomeS3Bucket" } }

1
既存のS3バケットでCloudFormationを使用する
CloudFormationを使用して、既存のバケットのAWS :: S3 :: Bucketのいくつかのプロパティを設定します。つまり、バケットを作成するのではなく、設定の一部を強制するだけです。これが私のクラウド形成JSONの例です: "websitePreviewBucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead", "VersioningConfiguration": { "Status": "Suspended" }, "BucketName": "preview.website.com", "WebsiteConfiguration": { "IndexDocument": "index.html", "ErrorDocument": "error.html" } } }, 当然のことながら、これはcloudformationコンソールで失敗します。 The following resource(s) failed to create: [websitePreviewBucket]. preview.website.com already exists バケットpreview.website.comを作成しました。つまり、このアカウントはそのバケットを「所有」しています。CloudFormation AccessControlを使用WebsiteConfigurationして既存のバケットなどに設定するにはどうすればよいですか? 同じような質問をする別の質問を見ましたが、適切な答えがありません。


5
AWS CloudFormation-テンプレートのカスタム変数
CloudFormationテンプレートパラメータから派生した、よく使用される値のショートカットを定義する方法はありますか? たとえば、ELB名projectとELBの背後にある2つのインスタンスとで呼び出されるMulti-AZプロジェクトスタックを作成するスクリプトがproject-1ありproject-2ます。ELBHostNameテンプレートにパラメーターを渡し、後でそれを使用して構築するだけです: "Fn::Join": [ ".", [ { "Fn::Join": [ "", [ { "Ref": "ELBHostName" }, "-1" ] ] }, { "Ref": "EnvironmentVersioned" }, { "Ref": "HostedZone" } ] ] EC2ホスト名、Route53レコードなどを作成するために、この構造または非常に類似したものがテンプレート全体で何度も繰り返されます。 それを何度も繰り返す代わりに、その出力Fn::Joinを何らかの変数に割り当て、それを参照するだけ"Ref":です。これは、with with ステートメントと同じです。 理想的には次のようなものです: Var::HostNameFull = "Fn::Join": [ ... ] ... { "Name": { "Ref": "Var::HostNameFull" } } または同様にシンプルなもの。 Amazon …

3
Amazon cloudformationでEC2 :: InstanceまたはRDS :: DBInstanceの再作成を強制することは可能ですか?
cloudformationスタックを使用してEC2またはRDSインスタンスの再作成を強制することは可能ですか? 私のスタックは、リソースを単に破棄して作成するだけで修正されるという点で立ち往生しています。代わりに、作業を続けるためにスタック全体を削除する必要がありました。 編集: この問題は私に二度襲いました。最初に、いくつかのデフォルトでAWS :: RDS :: Instanceを作成し、それを "EngineVersion": "5.5"にダウングレードしようとしました。これを変更すると、何らかの中断が発生する可能性がありますが、mysqlインスタンスを5.6から5.5にダウングレードできないため、スタックはUPDATE_FAILED状態のままであり、厄介なトリックなしでRDSを再作成することはできません。 もう1つは、「UserData」からスクリプトをダウンロードして実行する「AWS :: EC2 :: Instance」が複数あることです。ダウンロードしたスクリプトを変更した場合、インスタンスを削除する必要があります。もう一度、同じ厄介なトリックを使用して、マシンを再作成します。 厄介なトリック: 1台のマシンの自動スケーリンググループを使用する代わりに、プロパティのアベイラビリティゾーンを変更する両方の問題を解決しました...

4
cloudformationでは、再利用可能な文字列を作成できますか?
私は文字列を持っています。これは、タグやホスト名など、さまざまなものに使用するいくつかの変数から形成されています。 テンプレートを参照するだけで再利用可能な文字列を作成する方法はありますか? これについてのご意見をいただければ幸いです。編集:例は、それらを結合するProjectNameと環境などの2つのパラメータを渡すことです "Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ] そして、多くの場所で結果を使用する

4
AWSクラウドフォーメーションが指定したパッケージをインストールしないのはなぜですか?
私はAWSサービスに非常に新しいです。AWSクラウドフォーメーションを使用しようとしています。テンプレートを作成しました。このテンプレートにはエラーがなく、それを使用してマシンを作成できます。 しかし、起動時にtomcat、gitなどをインストールするように、テンプレートにいくつかの設定を追加しました。しかし、それは私には起こりません。 以下は、tomcatのインストールに使用したコードの一部です。 "Resources": { "Tomcat": { "Type": "AWS::EC2::Instance", "Metadata": { "AWS::CloudFormation::Init": { "config": { "packages": { "apt": { "tomcat6": [], "git": [], } } } } }, しかし、マシンにログインしても、インストールtomcatもgitされていません! 前もって感謝します。

2
AWS CloudFormation:VPCのデフォルトセキュリティグループ
(とりわけ)VPC、いくつかのセキュリティグループ、および少数のEC2インスタンスを作成するcfnスタックがあります。スタック内で作成されたセキュリティグループを、スタックによって作成されたインスタンスに割り当てることは簡単です。ただし、デフォルトのVPC SGに興味があります。 VPCが作成されると(GUIを介して手動で、cloudformation、またはその他の方法で)、AWSはそのグループ内のすべてのインスタンスに対して「すべて許可」ルールを使用してデフォルトのセキュリティグループを作成します。 私がやろうとしているのは、このデフォルトのセキュリティグループと他のいくつかのSGをスタックによって作成されたインスタンスに割り当てることです。これは、私が予想したよりもはるかに難しいことが証明されています。ここに私が何をしているかを示すスニペットがあります: "AllowSSHSecGroup":{ "Type":"AWS::EC2::SecurityGroup", "Properties":{ "GroupDescription":"Allow SSH from anywhere", "VpcId":{ "Ref":"DevVPC" }, "SecurityGroupIngress":[ { "IpProtocol":"tcp", "FromPort":"22", "ToPort":"22", "CidrIp":"0.0.0.0/0" } ] } }, "Instance001" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-7eab224e", "InstanceType" : "m1.large", "AvailabilityZone" : "us-west-2a", "PrivateIpAddress" : "10.22.0.110", "SecurityGroupIds" : [ {"Ref" : …

4
AWS CloudFormationがAWS :: Route53 :: RecordSetを作成しようとすると「無効なリクエスト」を返します
私はこれで迷っています。 99%の時間、CloudFormationは操作可能なデバッグメッセージを提供するのに非常に優れていますが、特にリソースが非常に単純な場合、「Invalid request」によって困惑しました。 これは私に問題を与えているリソースと言われています(Ansibleによって生成されたテンプレート、したがって{{...}}表記)、 "DatabaseDNSRecord": { "Type": "AWS::Route53::RecordSet", "Properties": { "HostedZoneId": "HOSTED_ZONE_ID", "Name": "db.{{ item.env_name|lower }}v2.<DOMAIN>.com.", "ResourceRecords": [ { "Fn::GetAtt": [ "Database", "Endpoint.Address" ] } ], "Type": "CNAME" }, "DependsOn": "Database" } 私がドキュメントから伝えることができるものから、必要なものはすべて存在し、正しく、正しい形式になっています。 私が考えることができる唯一のことは、すでにリソースを作成した既存の CloudFormationスタックにこのリソースを追加することです。これはレコード用です(必要に応じてリソーステンプレートも喜んで投稿します、特別なものはありません) 。DatabaseAWS::RDS::DBInstance 「無効なリクエスト」が表示される理由はありますか? ありがとう。 編集:私はこれを試しましたがTTL、同じエラーがありませんでした。

1
Api Gatewayを指すようにRoute 53をセットアップする方法
Cloudformation構成ファイルを作成して、Webサイトを一度に作成します。これには、ラムダ関数の作成、API Gatewayの作成、S3バケットの設定、Route 53ゾーンおよびレコードの作成が含まれます。 これまでのところ: Lambda関数とその役割の作成(機能) API Gatewayを作成し、それを展開し、その役割(機能) S3バケットとそのポリシーの作成(機能) サイトのRoute 53ゾーンとDNSレコードの作成(機能) API Gatewayのドメインを作成します(私が何をしているのかわかりません) したがってdomain.com、S3バケット内のファイルを問題なく提供します。API GatewayにAWS URIを使用してhttps://trydsoonjc.execute-api.us-west-2.amazonaws.com/app/path/hereも問題なく機能します。 設定したいのはapi.domain.com、サーバーのAPIにアクセスするAPIゲートウェイを指すことです。 Route 53をAPI Gatewayに接続するにはどうすればよいですか? 現在の私のCloudformationは次のとおりです。 { "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Website", "Parameters": { "DomainName": { "Type" : "String", "Description" : "The DNS name of an Amazon Route 53 hosted zone e.g. server.com", "AllowedPattern" : "(?!-)[a-zA-Z0-9-.]{1,63}(?<!-)", …

3
AWS Cloudformationと手動変更
Cloudformationのオブジェクトを手動でいじったときに何が起こるかについてのドキュメントが見つからないようです。 オブジェクトにタグが付けられているのを確認しましたが、たとえば誰かがルーティングルールを削除した場合に回復しますか? 編集:ちょうど2つの矛盾する答えを得ました。これらのリソースの変更に関して同僚にどのような指示を与えているのかを判断する必要があるため、いくつかのドキュメント/証拠を要求したいと思います。

2
AWS CloudFormationの条件付きプロパティ
EC2インスタンスを作成するためのAWS CloudFormationテンプレートがあります。しかし、それらのいくつかは特定のものを必要PrivateIpAddressとし、私はそれをテンプレートに組み込む方法を理解するのに苦労しています。 とりあえず、テンプレートパラメータPrivateIPと条件を作成していRequestedPrivateIPます。ここまでは順調ですね。しかし、それをAWS::EC2::Instanceリソース仕様に組み込む方法がわかりません。私はこれを試しました: "PrivateIpAddress": { "Fn::If": [ "RequestedPrivateIP", { "Ref": "PrivateIP" }, "" <-- This doesn't work ] }, しかし、RequestedPrivateIPがfalseの場合は失敗します CREATE_FAILED AWS::EC2::Instance NodeInstance Invalid addresses: [] オプションで静的プライベートIPを割り当て、指定がない場合はAWSに任せて動的IPを設定する方法はありますか?

4
Cloudformationでは、既存のポリシーを参照する新しいロールを作成できますか?
現時点では、異なるインスタンスの特定のキーパス(つまり、フォルダー)への特定のアクセス権を持つ共有S3バケットがあります。新しいロールでインスタンスプロファイルを作成し、そのフォルダーへのアクセスに制限する問題をテストすることができました。 私の問題は、ポリシーが定義された既存の一般的な役割があり、それを各スタックの新しい役割に含められるようにしたいことです。 cloudformationでは、ある役割で定義されたポリシーを別の役割に含めることができますが、新しい役割でポリシードキュメントを再定義する必要はありませんか? 次のようなもの: "AppTierS3AccessRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "Ref": "existing-policy" } ] } }, ここで重要なのは「既存のポリシー」です。既存のポリシーのarnを見つけて、それを参照してみましたが、少し行き詰まっています。

1
AWS CloudFormationは、インスタンスの開始時に後で使用するKeyPairを作成できますか?
CloudFormationの一部として作成されたキーペアを使用してスタックを起動したいと思います。 それは可能ですか? .... "Resources": { "ReverseProxyKeyPair": { "Type": "AWS::EC2::KeyPair", "Properties": { "KeyName": "reverse_proxy" } }, .... 推測でしたが、うまくいきませんでした。CloudFormationのスキーマを追跡していないので、これは不可能です。 ほとんどの例は、KeyPairがすでに作成されていることを前提としています-作成時にダウンロードする機会は1つしかないためです。しかし、動的に作成し、それを出力として使用してS3にダンプしたいと思います(たとえば)。 または、これはばかげた考えですか?

1
AWS CloudFormationスタックインスタンスにSSH接続できません
私は現在、スケーラブルなロードバランサーを設定していますが、これは主にこのテンプレートに従っています: https://github.com/satterly/AWSCloudFormation-samples/blob/master/LAMP_Multi_AZ.template AWS::AutoScaling::AutoScalingGroup.CreationPolicy.ResourceSignal.Countキーを調整した後0(基本的に、成功シグナルを受信せずにスタックを読み込むことができます)、スタックを読み込むことができ、利用可能なすべてのリソースを確認できます。 作成中のキーのパブリックDNSを確認できますが、インスタンスにSSH接続できません。 私はインスタンスルール内のすべてのユーザーに対してSSHアクセスを開いていますが、これはAWSコンソールで確認できます。 AWSの公式ドキュメント内で推奨されているように、VPCのルートも構成しました:https : //aws.amazon.com/premiumsupport/knowledge-center/ec2-linux-ssh-troubleshooting/ インスタンスが存在することは確認できますが、自分のアクセスをどこかに制限しているようです。ただし、AWS EC2コンソール内では、設定はインスタンスにSSH接続できる場合と同じように見えます。 VPC、サブネット、セキュリティグループなどを含むすべての設定を表示できる場所で使用しているJSONテンプレートを次に示します。https://gist.github.com/dambrogia/e4cd93a64ae6f3a79d4a58d466f144f8 次のコマンドからタイムアウトエラーが表示されます:(私のid_rsaキーはec2内で有効です) ssh -i ~/.ssh/id_rsa ec2-user@<ec2_instance> インスタンスにSSH接続するにはどうすればよいですか?助けてくれてありがとう!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.