/dhall-aws-cloudformation/gh-pages/examples/dynamo.dhall.html
Copy path to clipboardSource
<!DOCTYPE HTML><html><head><title>/examples/dynamo.dhall</title><link rel="stylesheet" type="text/css" href="../index.css"><link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Lato:ital,wght@0,400;0,700;1,400&display=swap"><script type="text/javascript" src="../index.js"></script><meta charset="UTF-8"></head><body><div class="nav-bar"><img class="dhall-icon" src="../dhall-icon.svg"><p class="package-title">dhall-aws-cloudformation</p><div class="nav-bar-content-divider"></div><a id="switch-light-dark-mode" class="nav-option">Switch Light/Dark Mode</a></div><div class="main-container"><h2 class="doc-title"><span class="crumb-divider">/</span><a href="../index.html">dhall-aws-cloudformation</a><span class="crumb-divider">/</span><a class="title-crumb" href="index.html">examples</a><span class="crumb-divider">/</span><span class="title-crumb" href="index.html">dynamo.dhall</span></h2><a class="copy-to-clipboard" data-path="https://raw.githubusercontent.com/jcouyang/dhall-aws-cloudformation/0.9.81/examples/dynamo.dhall"><i><small>Copy path to clipboard</small></i></a><br><div class="doc-contents"></div><h3>Source</h3><div class="source-code"><pre>let <span id="var1-5" class="name-decl" data-name="var1-5">cf</span> = (<a href="../package.dhall.html">../package.dhall</a>).Cloudformation<br><br>let <span id="var3-5" class="name-decl" data-name="var3-5">Table</span> = <a href="#var1-5" class="name-use" data-name="var1-5">cf</a>.`AWS::DynamoDB::Table`<br><br>let <span id="var5-5" class="name-decl" data-name="var5-5">Role</span> = <a href="#var1-5" class="name-use" data-name="var1-5">cf</a>.`AWS::IAM::Role`<br><br>let <span id="var7-5" class="name-decl" data-name="var7-5">SPolicy</span> = <a href="#var1-5" class="name-use" data-name="var1-5">cf</a>.`AWS::ApplicationAutoScaling::ScalingPolicy`<br><br>let <span id="var9-5" class="name-decl" data-name="var9-5">ScalableTarget</span> = <a href="#var1-5" class="name-use" data-name="var1-5">cf</a>.`AWS::ApplicationAutoScaling::ScalableTarget`<br><br>let <span id="var11-5" class="name-decl" data-name="var11-5">Fn</span> = <a href="../Fn.dhall.html">../Fn.dhall</a><br><br>let <span id="var13-5" class="name-decl" data-name="var13-5">fn</span> = <a href="#var11-5" class="name-use" data-name="var11-5">Fn</a>.render<br><br>let <span id="var15-5" class="name-decl" data-name="var15-5">JSON</span> = (<a href="../Prelude.dhall.html">../Prelude.dhall</a>).JSON<br><br>let <span id="var17-5" class="name-decl" data-name="var17-5">s</span> = <a href="#var11-5" class="name-use" data-name="var11-5">Fn</a>.renderText<br><br>let <span id="var19-5" class="name-decl" data-name="var19-5">DeletePolicy</span> = <a href="../DeletionPolicy.dhall.html">../DeletionPolicy.dhall</a><br><br>let <span id="var21-5" class="name-decl" data-name="var21-5">policyTamplate</span> = <a href="../sam/policy-template/package.dhall.html">../sam/policy-template/package.dhall</a><br><br>in { Resources =<br> { DDBTable = <a href="#var3-5" class="name-use" data-name="var3-5">Table</a>.Resources::{<br> , DeletionPolicy = Some <a href="#var19-5" class="name-use" data-name="var19-5">DeletePolicy</a>.Retain<br> , Properties = <a href="#var3-5" class="name-use" data-name="var3-5">Table</a>.Properties::{<br> , AttributeDefinitions = Some<br> [ { AttributeName = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "ArtistId", AttributeType = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "S" }<br> , { AttributeName = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "Concert", AttributeType = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "S" }<br> , { AttributeName = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "TicketSales", AttributeType = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "S" }<br> ]<br> , GlobalSecondaryIndexes = Some<br> [ <a href="#var3-5" class="name-use" data-name="var3-5">Table</a>.GlobalSecondaryIndex::{<br> , IndexName = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "GSI"<br> , KeySchema =<br> [ { AttributeName = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "TicketSales", KeyType = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "HASH" } ]<br> , Projection = <a href="#var3-5" class="name-use" data-name="var3-5">Table</a>.Projection::{<br> , ProjectionType = Some (<a href="#var17-5" class="name-use" data-name="var17-5">s</a> "KEYS_ONLY")<br> }<br> , ProvisionedThroughput = Some<br> { ReadCapacityUnits = +5, WriteCapacityUnits = +5 }<br> }<br> ]<br> , KeySchema =<br> [ { AttributeName = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "ArtistId", KeyType = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "HASH" }<br> , { AttributeName = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "Concert", KeyType = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "RANGE" }<br> ]<br> , ProvisionedThroughput = Some<br> { ReadCapacityUnits = +5, WriteCapacityUnits = +5 }<br> }<br> }<br> , ScalingRole = <a href="#var5-5" class="name-use" data-name="var5-5">Role</a>.Resources::{<br> , Properties = <a href="#var5-5" class="name-use" data-name="var5-5">Role</a>.Properties::{<br> , AssumeRolePolicyDocument =<br> <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.object<br> ( toMap<br> { Statement =<br> <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.array<br> [ <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.object<br> ( toMap<br> { Action =<br> <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.array<br> [ <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.string "sts:AssumeRole" ]<br> , Effect = <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.string "Allow"<br> , Principal =<br> <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.object<br> ( toMap<br> { Service =<br> <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.array<br> [ <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.string<br> "application-autoscaling.amazonaws.com"<br> ]<br> }<br> )<br> }<br> )<br> ]<br> , Version = <a href="#var15-5" class="name-use" data-name="var15-5">JSON</a>.string "2012-10-17"<br> }<br> )<br> , Path = Some (<a href="#var17-5" class="name-use" data-name="var17-5">s</a> "/")<br> , Policies = Some<br> [ <a href="#var5-5" class="name-use" data-name="var5-5">Role</a>.Policy::{<br> , PolicyDocument =<br> <a href="#var21-5" class="name-use" data-name="var21-5">policyTamplate</a>.DynamoDBReadPolicy (<a href="#var11-5" class="name-use" data-name="var11-5">Fn</a>.String "Name")<br> , PolicyName = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "root"<br> }<br> ]<br> }<br> }<br> , WriteCapacityScalableTarget = <a href="#var9-5" class="name-use" data-name="var9-5">ScalableTarget</a>.Resources::{<br> , Properties = <a href="#var9-5" class="name-use" data-name="var9-5">ScalableTarget</a>.Properties::{<br> , MaxCapacity = +15<br> , MinCapacity = +5<br> , ResourceId =<br> <a href="#var13-5" class="name-use" data-name="var13-5">fn</a> (<a href="#var11-5" class="name-use" data-name="var11-5">Fn</a>.Join "/" [ <a href="#var11-5" class="name-use" data-name="var11-5">Fn</a>.String "table", <a href="#var11-5" class="name-use" data-name="var11-5">Fn</a>.Ref "DDBTable" ])<br> , RoleARN = Some (<a href="#var13-5" class="name-use" data-name="var13-5">fn</a> (<a href="#var11-5" class="name-use" data-name="var11-5">Fn</a>.GetAtt "ScalingRole.Arn"))<br> , ScalableDimension = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "dynamodb:table:WriteCapacityUnits"<br> , ServiceNamespace = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "dynamodb"<br> }<br> }<br> , WriteScalingPolicy = <a href="#var7-5" class="name-use" data-name="var7-5">SPolicy</a>.Resources::{<br> , Properties = <a href="#var7-5" class="name-use" data-name="var7-5">SPolicy</a>.Properties::{<br> , PolicyName = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "WriteAutoScalingPolicy"<br> , PolicyType = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "TargetTrackingScaling"<br> , ScalingTargetId = Some (<a href="#var13-5" class="name-use" data-name="var13-5">fn</a> (<a href="#var11-5" class="name-use" data-name="var11-5">Fn</a>.Ref "WriteCapacityScalableTarget"))<br> , TargetTrackingScalingPolicyConfiguration = Some <a href="#var7-5" class="name-use" data-name="var7-5">SPolicy</a>.TargetTrackingScalingPolicyConfiguration::{<br> , PredefinedMetricSpecification = Some <a href="#var7-5" class="name-use" data-name="var7-5">SPolicy</a>.PredefinedMetricSpecification::{<br> , PredefinedMetricType = <a href="#var17-5" class="name-use" data-name="var17-5">s</a> "DynamoDBWriteCapacityUtilization"<br> }<br> , ScaleInCooldown = Some +60<br> , ScaleOutCooldown = Some +60<br> , TargetValue = 50.0<br> }<br> }<br> }<br> }<br> }<br></pre></div></div></body></html>